#include "StdAfx.h"
#include "scriptbind_traits.h"

void DeleteWidget (ATOM_Widget *widget)
{
	ATOM_DELETE(widget);
}

int Widget_GetShowState (ATOM_Widget *widget)
{
	return widget->getShowState();
}

void RealtimeCtrl_ConstructRay (ATOM_RealtimeCtrl *rc, int x, int y, ATOM_Ray *ray)
{
    rc->constructRay (x, y, *ray);
}

void RealtimeCtrl_Pick (ATOM_RealtimeCtrl *rc, int x, int y, ATOM_PickVisitor *v)
{
    rc->pick (x, y, *v);
}

void MultiEdit_MoveCursor (ATOM_MultiEdit *e, int offset)
{
	e->moveCursor (offset);
}

void TreeCtrl_SelectItemById(ATOM_TreeCtrl *t, int index, bool postEvent)
{
	t->selectItem (index, postEvent);
}

void TreeCtrl_SelectItem(ATOM_TreeCtrl *t, ATOM_TreeItem* item, bool postEvent)
{
	t->selectItem (item, postEvent);
}

int ListBox_InsertItem(ATOM_ListBox *lb, int index, const char* str, unsigned userData)
{
	return lb->insertItem (index, str, userData);
}

int ListBox_InsertItemEx(ATOM_ListBox *lb, int index, const char* str, ATOM_ColorARGB color, unsigned long long userData)
{
	return lb->insertItem (index, str, color, userData);
}

void MultiEdit_GetString (ATOM_MultiEdit *edit, ATOM_STRING *str)
{
    edit->getString (*str);
}

void Edit_GetString (ATOM_Edit *edit, ATOM_STRING *str)
{
    edit->getString (*str);
}

void Edit_GetDefaultString (ATOM_Edit *edit, ATOM_STRING *str)
{
    edit->getDefaultString(*str);
}

void Node_SetDescribe (ATOM_Node *node, const char *desc)
{
	node->setDescribe (desc);
}

void Node_Accept (ATOM_Node *node, ATOM_Visitor *visitor)
{
    node->accept (*visitor);
}

const char *Node_GetDescribe (ATOM_Node *node)
{
	return node->getDescribe ().c_str();
}

bool Node_MTLoad (ATOM_Node *node, unsigned flags, long group)
{
	return node->mtload (ATOM_GetRenderDevice(), flags, NULL, 0, group);
}

bool Node_MTLoadFromFile (ATOM_Node *node, const char *filename, unsigned flags, long group)
{
	return node->mtloadFromFile (ATOM_GetRenderDevice(), filename, flags, NULL, 0, group);
}

ATOM_Node *Node_Clone (ATOM_Node *node)
{
	ATOM_AUTOREF(ATOM_Node) p = node->clone ();
	if (p)
	{
		p->addRef ();
	}
	return p.get();
}

ATOM_Node *Node_LoadNodeFromFile (const char *filename)
{
	ATOM_AUTOREF(ATOM_Node) p = ATOM_Node::loadNodeFromFile (filename);
	if (p)
	{
		p->addRef ();
	}
	return p.get();
}

const char *Node_GetLayer (ATOM_Node *node)
{
	return node->getLayer().c_str();
}

void Node_SetLayer (ATOM_Node *node, const char *layer)
{
	node->setLayer (layer);
}

void Node_SetNodeFileName (ATOM_Node *node, const char *filename)
{
	node->setNodeFileName (filename);
}

const char *Node_GetNodeFileName (ATOM_Node *node)
{
	return node->getNodeFileName().c_str();
}

bool Components_LoadComponents (ATOM_Components *components, const char *filename, bool mt, unsigned flags, long group, ATOM_LoadInterface *owner)
{
	return components->loadComponents (filename, mt, flags, 0, 0, group, owner);
}

bool Scene_Load (ATOM_Scene *scene, ATOM_Node *parent, const char *filename, bool mt)
{
	return scene->load (filename, parent, 0, 0);
}

ATOM_SDLScene *SDLScene_Constructor (void)
{
	return ATOM_NEW(ATOM_SDLScene);
}

ATOM_DeferredScene *DeferredScene_Constructor (void)
{
	return ATOM_NEW(ATOM_DeferredScene);
}

void Water_SetFoamTextureFileName (ATOM_Water *water, const char *filename)
{
	water->setFoamTextureFileName (filename);
}

const char *Water_GetFoamTextureFileName (ATOM_Water *water)
{
	return water->getFoamTextureFileName().c_str();
}

void ParticleSystem_SetTextureFileName (ATOM_ParticleSystem *ps, const char *filename)
{
	ps->setTextureFileName (filename);
}

const char *ParticleSystem_GetTextureFileName (ATOM_ParticleSystem *ps)
{
	return ps->getTextureFileName ().c_str();
}

void ParticleSystem_SetColorFileName (ATOM_ParticleSystem *ps, const char *filename)
{
	ps->setColorFileName (filename);
}

const char *ParticleSystem_GetColorFileName (ATOM_ParticleSystem *ps)
{
	return ps->getColorFileName ().c_str();
}

ATOM_Rect2Di GUIRect_Contructor (int x, int y, int w, int h)
{
	return ATOM_Rect2Di(x, y, w, h);
}

ATOM_Point2Di GUIPoint_Contructor (int x, int y)
{
	return ATOM_Point2Di(x, y);
}

bool GUIPoint_EQ (ATOM_Point2Di *pt, ATOM_Point2Di *pt2)
{
	if (!pt || !pt2)
	{
		return pt == pt2;
	}
	else
	{
		return *pt == *pt2;
	}
}

ATOM_Point2Di GUIPoint_ADD(ATOM_Point2Di *pt, ATOM_Point2Di *pt2)
{
	return ATOM_Point2Di (pt->x + pt2->x, pt->y + pt2->y);
}

ATOM_Point2Di GUIPoint_SUB(ATOM_Point2Di *pt, ATOM_Point2Di *pt2)
{
	return ATOM_Point2Di (pt->x - pt2->x, pt->y - pt2->y);
}

ATOM_Point2Di GUIPoint_NEG(ATOM_Point2Di *pt)
{
	return ATOM_Point2Di (-pt->x, -pt->y);
}

ATOM_Size2Di GUISize_Contructor (int w, int h)
{
	return ATOM_Size2Di(w, h);
}

bool GUISize_EQ (ATOM_Point2Di *sz, ATOM_Point2Di *sz2)
{
	if (!sz || !sz2)
	{
		return sz == sz2;
	}
	else
	{
		return *sz == *sz2;
	}
}

ATOM_Size2Di GUISize_ADD(ATOM_Size2Di *sz, ATOM_Size2Di *sz2)
{
	return ATOM_Size2Di (sz->w + sz2->w, sz->h + sz2->h);
}

ATOM_Size2Di GUISize_SUB(ATOM_Size2Di *sz, ATOM_Size2Di *sz2)
{
	return ATOM_Size2Di (sz->w - sz2->w, sz->h - sz2->h);
}

bool GUIRect_EQ (ATOM_Rect2Di *rc, ATOM_Rect2Di *rc2)
{
	if (!rc || !rc2)
	{
		return rc == rc2;
	}
	else
	{
		return *rc == *rc2;
	}
}

void Hud_SetText (ATOM_Hud *hud, const char *text, const ATOM_ColorARGB &color, ATOM_FontHandle font, int charMargin, int x, int y, int borderX, int borderY, unsigned alignment)
{
	ATOM_Hud::TextProp prop;
	prop.text = (char*)text;
	prop.textColor = color;
	prop.fontHandle = font;
	prop.charMargin = charMargin;
	prop.x = x;
	prop.y = y;
	prop.borderX = borderX;
	prop.borderY = borderY;
	prop.alignment = alignment;

	hud->setTextProperties (prop);
}

ATOM_RenderWindowDesc RenderWindowDesc_Constructor (unsigned width, unsigned height, bool fullscreen, bool naked, bool resizable, int multisample, const char *title)
{
	ATOM_RenderWindowDesc desc;
	desc.width = width;
	desc.height = height;
	desc.fullscreen = fullscreen;
	desc.naked = naked;
	desc.resizable = resizable;
	desc.multisample = multisample;
	desc.title = title;
	desc.iconid = 0;
	desc.windowid = 0;
	return desc;
}

ATOM_ScriptEventTrigger *ScriptEventTrigger_Constructor (ATOM_Script *script)
{
	return ATOM_NEW(ATOM_ScriptEventTrigger, script);
}

template <class T>
T *WidgetConstructor (ATOM_Widget *parent, const ATOM_Rect2Di &rc, unsigned style, int id, ATOM_Widget::ShowState showState)
{
	return ATOM_NEW(T, parent, rc, style, id, showState);
}

ATOM_RichEdit *RichEdit_Constructor (ATOM_Widget *parent, const ATOM_Rect2Di &rc, unsigned style, int id, int lineheight, ATOM_Widget::ShowState showState)
{
	return ATOM_NEW(ATOM_RichEdit, parent, rc, style, id, lineheight, showState);
}

ATOM_MenuBar *MenuBar_Constructor (ATOM_GUIRenderer *renderer)
{
	return ATOM_NEW(ATOM_MenuBar, renderer);
}

ATOM_PopupMenu *PopupMenu_Constructor (ATOM_GUIRenderer *renderer, int id)
{
	return ATOM_NEW(ATOM_PopupMenu, renderer, id);
}

ATOM_ComboBox *ComboBox_Constructor (ATOM_Widget *parent, const ATOM_Rect2Di &rect, int buttonWidth, unsigned style, int id, ATOM_Widget::ShowState showState)
{
	return ATOM_NEW(ATOM_ComboBox, parent, rect, buttonWidth, style, id, showState);
}

ATOM_ListBox *ListBox_Constructor (ATOM_Widget *parent, const ATOM_Rect2Di &rect, int itemHeight, unsigned style, int id, ATOM_Widget::ShowState showState)
{
	return ATOM_NEW(ATOM_ListBox, parent, rect, itemHeight, style, id, showState);
}

ATOM_TreeCtrl *TreeCtrl_Constructor (ATOM_Widget *parent, const ATOM_Rect2Di &rect, unsigned style, int id, int imageSize, int lineHeight, int indent, ATOM_Widget::ShowState showState)
{
	return ATOM_NEW(ATOM_TreeCtrl, parent, rect, style, id, imageSize, lineHeight, indent, showState);
}

bool Rect_IntersectedWith (ATOM_Rect2Di *rc, const ATOM_Rect2Di &dest)
{
	return rc->intersectedWith (dest);
}

ATOM_SCRIPT_BEGIN_TYPE_TABLE(EngineTypes)

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_STATIC_INT_CONSTANT(AnyId, ATOM_Widget::AnyId)
		ATOM_DECLARE_STATIC_INT_CONSTANT(CloseButtonId, ATOM_Widget::CloseButtonId)
		ATOM_DECLARE_STATIC_INT_CONSTANT(VScrollBarId, ATOM_Widget::VScrollBarId)
		ATOM_DECLARE_STATIC_INT_CONSTANT(HScrollBarId, ATOM_Widget::HScrollBarId)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Hide, ATOM_Widget::Hide)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ShowNormal, ATOM_Widget::ShowNormal)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Disabled, ATOM_Widget::Disabled)
		ATOM_DECLARE_STATIC_INT_CONSTANT(TopMost, ATOM_Widget::TopMost)
		ATOM_DECLARE_STATIC_INT_CONSTANT(TemporalDisabled, ATOM_Widget::TemporalDisabled)
		ATOM_DECLARE_STATIC_INT_CONSTANT(AlignX_Left, ATOM_Widget::AlignX_Left)
		ATOM_DECLARE_STATIC_INT_CONSTANT(AlignX_Middle, ATOM_Widget::AlignX_Middle)
		ATOM_DECLARE_STATIC_INT_CONSTANT(AlignX_Right, ATOM_Widget::AlignX_Right)
		ATOM_DECLARE_STATIC_INT_CONSTANT(AlignY_Top, ATOM_Widget::AlignY_Top)
		ATOM_DECLARE_STATIC_INT_CONSTANT(AlignY_Middle, ATOM_Widget::AlignY_Middle)
		ATOM_DECLARE_STATIC_INT_CONSTANT(AlignY_Bottom, ATOM_Widget::AlignY_Bottom)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Border, ATOM_Widget::Border)
		ATOM_DECLARE_STATIC_INT_CONSTANT(TitleBar, ATOM_Widget::TitleBar)
		ATOM_DECLARE_STATIC_INT_CONSTANT(CloseButton, ATOM_Widget::CloseButton)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Control, ATOM_Widget::Control)
		ATOM_DECLARE_STATIC_INT_CONSTANT(NoClip, ATOM_Widget::NoClip)
		ATOM_DECLARE_STATIC_INT_CONSTANT(DynamicContent, ATOM_Widget::DynamicContent)
		ATOM_DECLARE_STATIC_INT_CONSTANT(NoFocus, ATOM_Widget::NoFocus)
		ATOM_DECLARE_STATIC_INT_CONSTANT(VScroll, ATOM_Widget::VScroll)
		ATOM_DECLARE_STATIC_INT_CONSTANT(HScroll, ATOM_Widget::HScroll)
		ATOM_DECLARE_STATIC_INT_CONSTANT(NonScrollable, ATOM_Widget::NonScrollable)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ClipChildren, ATOM_Widget::ClipChildren)
		ATOM_DECLARE_STATIC_INT_CONSTANT(LeftScroll, ATOM_Widget::LeftScroll)
		ATOM_DECLARE_STATIC_INT_CONSTANT(TopScroll, ATOM_Widget::TopScroll)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Flat, ATOM_Widget::Flat)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Raise, ATOM_Widget::Raise)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Drop, ATOM_Widget::Drop)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_Widget>)
		ATOM_DECLARE_METHOD(setEventTrigger, ATOM_Widget::setEventTrigger)
		ATOM_DECLARE_METHOD(handleEvent, ATOM_Widget::handleEvent)
		ATOM_DECLARE_METHOD(isMenu, ATOM_Widget::isMenu)
		ATOM_DECLARE_METHOD(isTopWindow, ATOM_Widget::isTopWindow)
		ATOM_DECLARE_METHOD(getType, ATOM_Widget::getType)
		ATOM_DECLARE_METHOD(moveTo, ATOM_Widget::moveTo)
		ATOM_DECLARE_METHOD(show, ATOM_Widget::show)
		ATOM_DECLARE_METHOD(getShowState, Widget_GetShowState)
		ATOM_DECLARE_METHOD(setMenuBar, ATOM_Widget::setMenuBar)
		ATOM_DECLARE_METHOD(getMenuBar, ATOM_Widget::getMenuBar)
		ATOM_DECLARE_METHOD(enableIME, ATOM_Widget::enableIME)
		ATOM_DECLARE_METHOD(getRenderer, ATOM_Widget::getRenderer)
		ATOM_DECLARE_METHOD(setImageList, ATOM_Widget::setImageList)
		ATOM_DECLARE_METHOD(setClientImageId, ATOM_Widget::getClientImageId)
		ATOM_DECLARE_METHOD(setscrollBarWidth, ATOM_Widget::setscrollBarWidth)
		ATOM_DECLARE_METHOD(getscrollBarWidth, ATOM_Widget::getscrollBarWidth)
		ATOM_DECLARE_METHOD(getParent, ATOM_Widget::getParent)
		ATOM_DECLARE_METHOD(getId, ATOM_Widget::getId)
		ATOM_DECLARE_METHOD(getWidgetRect, ATOM_Widget::getWidgetRect)
		ATOM_DECLARE_METHOD(getClientRect, ATOM_Widget::getClientRect)
		ATOM_DECLARE_METHOD(getFirstChild, ATOM_Widget::getFirstChild)
		ATOM_DECLARE_METHOD(getLastChild, ATOM_Widget::getLastChild)
		ATOM_DECLARE_METHOD(getFirstControl, ATOM_Widget::getFirstControl)
		ATOM_DECLARE_METHOD(getLastControl, ATOM_Widget::getLastControl)
		ATOM_DECLARE_METHOD(getNextSibling, ATOM_Widget::getNextSibling)
		ATOM_DECLARE_METHOD(getPrevSibling, ATOM_Widget::getPrevSibling)
		ATOM_DECLARE_METHOD(getChildById, ATOM_Widget::getChildById)
		ATOM_DECLARE_METHOD(getChildByIdRecursive, ATOM_Widget::getChildByIdRecursive)
		ATOM_DECLARE_METHOD(getChildByName, ATOM_Widget::getChildByName)
		ATOM_DECLARE_METHOD(getChildByNameRecursive, ATOM_Widget::getChildByNameRecursive)
		ATOM_DECLARE_METHOD(deleteChild, ATOM_Widget::deleteChild)
		ATOM_DECLARE_METHOD(clearChildren, ATOM_Widget::clearChildren)
		ATOM_DECLARE_METHOD(clientToScreen, ATOM_Widget::clientToScreen)
		ATOM_DECLARE_METHOD(screenToClient, ATOM_Widget::screenToClient)
		ATOM_DECLARE_METHOD(clientToViewport, ATOM_Widget::clientToViewport)
		ATOM_DECLARE_METHOD(viewportToClient, ATOM_Widget::viewportToClient)
		ATOM_DECLARE_METHOD(clientToGUI, ATOM_Widget::clientToGUI)
		ATOM_DECLARE_METHOD(GUIToClient, ATOM_Widget::GUIToClient)
		ATOM_DECLARE_METHOD(setFlags, ATOM_Widget::setFlags)
		ATOM_DECLARE_METHOD(getFlags, ATOM_Widget::getFlags)
		ATOM_DECLARE_METHOD(setStyle, ATOM_Widget::setStyle)
		ATOM_DECLARE_METHOD(getStyle, ATOM_Widget::getStyle)
		ATOM_DECLARE_METHOD(setBorderMode, ATOM_Widget::setBorderMode)
		ATOM_DECLARE_METHOD(getBorderMode, ATOM_Widget::getBorderMode)
		ATOM_DECLARE_METHOD(isControl, ATOM_Widget::isControl)
		ATOM_DECLARE_METHOD(invalidate, ATOM_Widget::invalidate)
		ATOM_DECLARE_METHOD(trackPopupMenu, ATOM_Widget::trackPopupMenu)
		ATOM_DECLARE_METHOD(setCapture, ATOM_Widget::setCapture)
		ATOM_DECLARE_METHOD(releaseCapture, ATOM_Widget::releaseCapture)
		ATOM_DECLARE_METHOD(isCaptured, ATOM_Widget::isCaptured)
		ATOM_DECLARE_METHOD(enable, ATOM_Widget::enable)
		ATOM_DECLARE_METHOD(isEnabled, ATOM_Widget::isEnabled)
		ATOM_DECLARE_METHOD(setPickable, ATOM_Widget::setPickable)
		ATOM_DECLARE_METHOD(isPickable, ATOM_Widget::isPickable)
		ATOM_DECLARE_METHOD(isMouseHover, ATOM_Widget::isMouseHover)
		ATOM_DECLARE_METHOD(getWidgetState, ATOM_Widget::getWidgetState)
		ATOM_DECLARE_METHOD(moveBy, ATOM_Widget::moveBy)
		ATOM_DECLARE_METHOD(resize, ATOM_Widget::resize)
		ATOM_DECLARE_METHOD(bringToFront, ATOM_Widget::bringToFront)
		ATOM_DECLARE_METHOD(setCanvasSize, ATOM_Widget::setCanvasSize)
		ATOM_DECLARE_METHOD(getCanvasSize, ATOM_Widget::getCanvasSize)
		ATOM_DECLARE_METHOD(setScrollValue, ATOM_Widget::setScrollValue)
		ATOM_DECLARE_METHOD(getScrollValue, ATOM_Widget::getScrollValue)
		ATOM_DECLARE_METHOD(getVerticalScrollBar, ATOM_Widget::getVerticalScrollBar)
		ATOM_DECLARE_METHOD(getHorizontalScrollBar, ATOM_Widget::getHorizontalScrollBar)
		ATOM_DECLARE_METHOD(loadHierarchy, ATOM_Widget::loadHierarchy)
		ATOM_DECLARE_STATIC_METHOD(destroy, DeleteWidget)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Label, ATOM_Label, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_Label>)
		ATOM_DECLARE_METHOD(setText, ATOM_Label::setText)
		ATOM_DECLARE_METHOD(getText, ATOM_Label::getText)
		ATOM_DECLARE_METHOD(setFont, ATOM_Label::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_Label::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_Label::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_Label::getFontColor)
		ATOM_DECLARE_METHOD(setAlign, ATOM_Label::setAlign)
		ATOM_DECLARE_METHOD(getAlign, ATOM_Label::getAlign)
		ATOM_DECLARE_METHOD(setOffset, ATOM_Label::setOffset)
		ATOM_DECLARE_METHOD(getOffset, ATOM_Label::getOffset)
		ATOM_DECLARE_METHOD(setColor, ATOM_Label::setColor)
		ATOM_DECLARE_METHOD(getColor, ATOM_Label::getColor)
		ATOM_DECLARE_METHOD(setRotation, ATOM_Label::setRotation)
		ATOM_DECLARE_METHOD(getRotation, ATOM_Label::getRotation)
		ATOM_DECLARE_METHOD(setOutlineColor, ATOM_Label::setOutlineColor)
		ATOM_DECLARE_METHOD(getOutlineColor, ATOM_Label::getOutlineColor)
		ATOM_DECLARE_METHOD(setUnderlineColor, ATOM_Label::setUnderlineColor)
		ATOM_DECLARE_METHOD(getUnderlineColor, ATOM_Label::getUnderlineColor)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_TopWindow, ATOM_TopWindow, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_TopWindow>)
		ATOM_DECLARE_METHOD(close, ATOM_TopWindow::close)
		ATOM_DECLARE_METHOD(setText, ATOM_TopWindow::setText)
		ATOM_DECLARE_METHOD(getText, ATOM_TopWindow::getText)
		ATOM_DECLARE_METHOD(setFont, ATOM_TopWindow::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_TopWindow::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_TopWindow::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_TopWindow::getFontColor)
		ATOM_DECLARE_METHOD(setAlign, ATOM_TopWindow::setAlign)
		ATOM_DECLARE_METHOD(getAlign, ATOM_TopWindow::getAlign)
		ATOM_DECLARE_METHOD(setOffset, ATOM_TopWindow::setOffset)
		ATOM_DECLARE_METHOD(allowClientDragging, ATOM_TopWindow::allowClientDragging)
		ATOM_DECLARE_METHOD(isClientDraggingAllowed, ATOM_TopWindow::isClientDraggingAllowed)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_ScrollBar, ATOM_ScrollBar, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_ScrollBar>)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ID_BUTTONUP, ATOM_ScrollBar::ID_BUTTONUP)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ID_BUTTONDOWN, ATOM_ScrollBar::ID_BUTTONDOWN)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ID_SLIDER, ATOM_ScrollBar::ID_SLIDER)
		ATOM_DECLARE_METHOD(setVerticalImageId, ATOM_ScrollBar::setVerticalImageId)
		ATOM_DECLARE_METHOD(setHorizontalImageId, ATOM_ScrollBar::setHorizontalImageId)
		ATOM_DECLARE_METHOD(setPlacement, ATOM_ScrollBar::setPlacement)
		ATOM_DECLARE_METHOD(getPlacement, ATOM_ScrollBar::getPlacement)
		ATOM_DECLARE_METHOD(setButtonWidth, ATOM_ScrollBar::setButtonWidth)
		ATOM_DECLARE_METHOD(getButtonWidth, ATOM_ScrollBar::getButtonWidth)
		ATOM_DECLARE_METHOD(setHandleWidth, ATOM_ScrollBar::setHandleWidth)
		ATOM_DECLARE_METHOD(getHandleWidth, ATOM_ScrollBar::getHandleWidth)
		ATOM_DECLARE_METHOD(setRange, ATOM_ScrollBar::setRange)
		ATOM_DECLARE_METHOD(getRangeMin, ATOM_ScrollBar::getRangeMin)
		ATOM_DECLARE_METHOD(getRangeMax, ATOM_ScrollBar::getRangeMax)
		ATOM_DECLARE_METHOD(setStep, ATOM_ScrollBar::setStep)
		ATOM_DECLARE_METHOD(getStep, ATOM_ScrollBar::getStep)
		ATOM_DECLARE_METHOD(setPosition, ATOM_ScrollBar::setPosition)
		ATOM_DECLARE_METHOD(getPosition, ATOM_ScrollBar::getPosition)
		ATOM_DECLARE_METHOD(getSlider, ATOM_ScrollBar::getSlider)
		ATOM_DECLARE_METHOD(getUpButton, ATOM_ScrollBar::getUpButton)
		ATOM_DECLARE_METHOD(getDownButton, ATOM_ScrollBar::getDownButton)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_RichEdit, ATOM_RichEdit, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(RichEdit_Constructor)
		ATOM_DECLARE_METHOD(addXml, ATOM_RichEdit::addXml)
		ATOM_DECLARE_METHOD(setXml, ATOM_RichEdit::setXml)
		ATOM_DECLARE_METHOD(addString, ATOM_RichEdit::addString)
		ATOM_DECLARE_METHOD(addNewline, ATOM_RichEdit::addNewline)
		ATOM_DECLARE_METHOD(addImage, ATOM_RichEdit::addImage)
		ATOM_DECLARE_METHOD(setMaxHeight, ATOM_RichEdit::setMaxHeight)
		ATOM_DECLARE_METHOD(getMaxHeight, ATOM_RichEdit::getMaxHeight)
		ATOM_DECLARE_METHOD(setAutoSize, ATOM_RichEdit::setAutoSize)
		ATOM_DECLARE_METHOD(getAutoSize, ATOM_RichEdit::getAutoSize)
		ATOM_DECLARE_METHOD(clear, ATOM_RichEdit::clear)
		ATOM_DECLARE_METHOD(deleteLine, ATOM_RichEdit::deleteLine)
		ATOM_DECLARE_METHOD(setFont, ATOM_RichEdit::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_RichEdit::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_RichEdit::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_RichEdit::getFontColor)
		ATOM_DECLARE_METHOD(setOutlineColor, ATOM_RichEdit::setOutlineColor)
		ATOM_DECLARE_METHOD(getOutlineColor, ATOM_RichEdit::getOutlineColor)
		ATOM_DECLARE_METHOD(getLineHeight, ATOM_RichEdit::getLineHeight)
		ATOM_DECLARE_METHOD(scroll2Top, ATOM_RichEdit::scroll2Top)
		ATOM_DECLARE_METHOD(scroll2Bottom, ATOM_RichEdit::scroll2Bottom)
		ATOM_DECLARE_METHOD(setVerticalSCrollBarImageId,ATOM_RichEdit::setVerticalSCrollBarImageId)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_RealtimeCtrl, ATOM_RealtimeCtrl, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_RealtimeCtrl>)
		ATOM_DECLARE_METHOD(setScene, ATOM_RealtimeCtrl::setScene)
		ATOM_DECLARE_METHOD(getScene, ATOM_RealtimeCtrl::getScene)
		ATOM_DECLARE_METHOD(pick, RealtimeCtrl_Pick)
		ATOM_DECLARE_METHOD(constructRay, RealtimeCtrl_ConstructRay)
		ATOM_DECLARE_METHOD(transparent, ATOM_RealtimeCtrl::transparent)
		ATOM_DECLARE_METHOD(isTransparent, ATOM_RealtimeCtrl::isTransparent)
		ATOM_DECLARE_METHOD(beginRender, ATOM_RealtimeCtrl::beginRender)
		ATOM_DECLARE_METHOD(render, ATOM_RealtimeCtrl::render)
		ATOM_DECLARE_METHOD(endRender, ATOM_RealtimeCtrl::endRender)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_FlashCtrl, ATOM_FlashCtrl, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_FlashCtrl>)
		ATOM_DECLARE_METHOD(loadSWF, ATOM_FlashCtrl::loadSWF)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_ProgressBar, ATOM_ProgressBar, ATOM_Label, ATOM_Label)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_ProgressBar>)
		ATOM_DECLARE_METHOD(setFrontImageId, ATOM_ProgressBar::setFrontImageId)
		ATOM_DECLARE_METHOD(getFrontImageId, ATOM_ProgressBar::getFrontImageId)
		ATOM_DECLARE_METHOD(setCurrent, ATOM_ProgressBar::setCurrent)
		ATOM_DECLARE_METHOD(getCurrent, ATOM_ProgressBar::getCurrent)
		ATOM_DECLARE_METHOD(setMinMax, ATOM_ProgressBar::setMinMax)
		ATOM_DECLARE_METHOD(getMin, ATOM_ProgressBar::getMin)
		ATOM_DECLARE_METHOD(getMax, ATOM_ProgressBar::getMax)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_MultiEdit, ATOM_MultiEdit, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_MultiEdit>)
		ATOM_DECLARE_STATIC_INT_CONSTANT(MULTIEDITTYPE_READONLY, MULTIEDITTYPE_READONLY)
		ATOM_DECLARE_METHOD(setEditType, ATOM_MultiEdit::setEditType)
		ATOM_DECLARE_METHOD(getEditType, ATOM_MultiEdit::getEditType)
		ATOM_DECLARE_METHOD(setFont, ATOM_MultiEdit::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_MultiEdit::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_MultiEdit::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_MultiEdit::getFontColor)
		ATOM_DECLARE_METHOD(setString, ATOM_MultiEdit::setString)
		ATOM_DECLARE_METHOD(getString, MultiEdit_GetString)
		ATOM_DECLARE_METHOD(getStringLength, ATOM_MultiEdit::getStringLength)
		ATOM_DECLARE_METHOD(getCursorPosition, ATOM_MultiEdit::getCursorPosition)
		ATOM_DECLARE_METHOD(setOffsetX, ATOM_MultiEdit::setOffsetX)
		ATOM_DECLARE_METHOD(getOffsetX, ATOM_MultiEdit::getOffsetX)
		ATOM_DECLARE_METHOD(setCursorImageId, ATOM_MultiEdit::setCursorImageId)
		ATOM_DECLARE_METHOD(getCursorImageId, ATOM_MultiEdit::getCursorImageId)
		ATOM_DECLARE_METHOD(setCursorOffset, ATOM_MultiEdit::setCursorOffset)
		ATOM_DECLARE_METHOD(getCursorOffset, ATOM_MultiEdit::getCursorOffset)
		ATOM_DECLARE_METHOD(setCursorWidth, ATOM_MultiEdit::setCursorWidth)
		ATOM_DECLARE_METHOD(getCursorWidth, ATOM_MultiEdit::getCursorWidth)
		ATOM_DECLARE_METHOD(setMaxLength, ATOM_MultiEdit::setMaxLength)
		ATOM_DECLARE_METHOD(getMaxLength, ATOM_MultiEdit::getMaxLength)
		ATOM_DECLARE_METHOD(setLineHeight, ATOM_MultiEdit::setLineHeight)
		ATOM_DECLARE_METHOD(getLineHeight, ATOM_MultiEdit::getLineHeight)
		ATOM_DECLARE_METHOD(moveCursorStart, ATOM_MultiEdit::moveCursorStart)
		ATOM_DECLARE_METHOD(moveCursorEnd, ATOM_MultiEdit::moveCursorEnd)
		ATOM_DECLARE_METHOD(moveCursor, MultiEdit_MoveCursor)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_MenuBar, ATOM_MenuBar, ATOM_PopupMenu, ATOM_PopupMenu)
		ATOM_DECLARE_CONSTRUCTOR(MenuBar_Constructor)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_PopupMenu, ATOM_PopupMenu, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(PopupMenu_Constructor)
		ATOM_DECLARE_STATIC_INT_CONSTANT(invalid_index, ATOM_PopupMenu::invalid_index)
		ATOM_DECLARE_METHOD(appendMenuItem, ATOM_PopupMenu::appendMenuItem)
		ATOM_DECLARE_METHOD(insertMenuItem, ATOM_PopupMenu::insertMenuItem)
		ATOM_DECLARE_METHOD(removeMenuItem, ATOM_PopupMenu::removeMenuItem)
		ATOM_DECLARE_METHOD(clear, ATOM_PopupMenu::clear)
		ATOM_DECLARE_METHOD(getNumItems, ATOM_PopupMenu::getNumItems)
		ATOM_DECLARE_METHOD(createSubMenu, ATOM_PopupMenu::createSubMenu)
		ATOM_DECLARE_METHOD(deleteSubMenu, ATOM_PopupMenu::deleteSubMenu)
		ATOM_DECLARE_METHOD(setText, ATOM_PopupMenu::setText)
		ATOM_DECLARE_METHOD(getText, ATOM_PopupMenu::getText)
		ATOM_DECLARE_METHOD(setCheck, ATOM_PopupMenu::setCheck)
		ATOM_DECLARE_METHOD(getCheck, ATOM_PopupMenu::getCheck)
		ATOM_DECLARE_METHOD(setSelected, ATOM_PopupMenu::setSelected)
		ATOM_DECLARE_METHOD(getSelected, ATOM_PopupMenu::getSelected)
		ATOM_DECLARE_METHOD(setFont, ATOM_PopupMenu::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_PopupMenu::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_PopupMenu::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_PopupMenu::getFontColor)
		ATOM_DECLARE_METHOD(setSelectColor, ATOM_PopupMenu::setSelectColor)
		ATOM_DECLARE_METHOD(getSelectColor, ATOM_PopupMenu::getSelectColor)
		ATOM_DECLARE_METHOD(setItemImageId, ATOM_PopupMenu::setItemImageId)
		ATOM_DECLARE_METHOD(getItemImageId, ATOM_PopupMenu::getItemImageId)
		ATOM_DECLARE_METHOD(setHilightItemImageId, ATOM_PopupMenu::setHilightItemImageId)
		ATOM_DECLARE_METHOD(getHilightItemImageId, ATOM_PopupMenu::getHilightItemImageId)
		ATOM_DECLARE_METHOD(setDesiredItemSize, ATOM_PopupMenu::setDesiredItemSize)
		ATOM_DECLARE_METHOD(getDesiredItemSize, ATOM_PopupMenu::getDesiredItemSize)
		ATOM_DECLARE_METHOD(setCheckedFlagSize, ATOM_PopupMenu::setCheckedFlagSize)
		ATOM_DECLARE_METHOD(getCheckedFlagSize, ATOM_PopupMenu::getCheckedFlagSize)
		ATOM_DECLARE_METHOD(setCheckImageId, ATOM_PopupMenu::setCheckImageId)
		ATOM_DECLARE_METHOD(getCheckImageId, ATOM_PopupMenu::getCheckImageId)
		ATOM_DECLARE_METHOD(enableDrawText, ATOM_PopupMenu::enableDrawText)
		ATOM_DECLARE_METHOD(isDrawTextEnabled, ATOM_PopupMenu::isDrawTextEnabled)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Marquee, ATOM_Marquee, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_Marquee>)
		ATOM_DECLARE_STATIC_INT_CONSTANT(MARQUEEDIR_LEFT, MARQUEEDIR_LEFT)
		ATOM_DECLARE_STATIC_INT_CONSTANT(MARQUEEDIR_RIGHT, MARQUEEDIR_RIGHT)
		ATOM_DECLARE_STATIC_INT_CONSTANT(MARQUEETYPE_FATSCROLL, MARQUEETYPE_FATSCROLL)
		ATOM_DECLARE_METHOD(setDir, ATOM_Marquee::setDir)
		ATOM_DECLARE_METHOD(getDir, ATOM_Marquee::getDir)
		ATOM_DECLARE_METHOD(setSpeed, ATOM_Marquee::setSpeed)
		ATOM_DECLARE_METHOD(getSpeed, ATOM_Marquee::getSpeed)
		ATOM_DECLARE_METHOD(setPosition, ATOM_Marquee::setPosition)
		ATOM_DECLARE_METHOD(getPosition, ATOM_Marquee::getPosition)
		ATOM_DECLARE_METHOD(setOffset, ATOM_Marquee::setOffset)
		ATOM_DECLARE_METHOD(getOffset, ATOM_Marquee::getOffset)
		ATOM_DECLARE_METHOD(getTextWidth, ATOM_Marquee::getTextWidth)
		ATOM_DECLARE_METHOD(setText, ATOM_Marquee::setText)
		ATOM_DECLARE_METHOD(setFont, ATOM_Marquee::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_Marquee::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_Marquee::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_Marquee::getFontColor)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_HyperLink, ATOM_HyperLink, ATOM_Label, ATOM_Label)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_HyperLink>)
		ATOM_DECLARE_METHOD(setText, ATOM_HyperLink::setText)
		ATOM_DECLARE_METHOD(setHoverFontColor, ATOM_HyperLink::setHoverFontColor)
		ATOM_DECLARE_METHOD(getHoverFontColor, ATOM_HyperLink::getHoverFontColor)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Edit, ATOM_Edit, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_Edit>)
		ATOM_DECLARE_STATIC_INT_CONSTANT(EDITTYPE_NUMBER, EDITTYPE_NUMBER)
		ATOM_DECLARE_STATIC_INT_CONSTANT(EDITTYPE_PASSWORD, EDITTYPE_PASSWORD)
		ATOM_DECLARE_STATIC_INT_CONSTANT(EDITTYPE_READONLY, EDITTYPE_READONLY)
		ATOM_DECLARE_METHOD(setEditType, ATOM_Edit::setEditType)
		ATOM_DECLARE_METHOD(getEditType, ATOM_Edit::getEditType)
		ATOM_DECLARE_METHOD(setFont, ATOM_Edit::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_Edit::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_Edit::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_Edit::getFontColor)
		ATOM_DECLARE_METHOD(setString, ATOM_Edit::setString)
		ATOM_DECLARE_METHOD(getString, Edit_GetString)
		ATOM_DECLARE_METHOD(setDefaultFontColor, ATOM_Edit::setDefaultFontColor)
		ATOM_DECLARE_METHOD(getDefaultFontColor, ATOM_Edit::getDefaultFontColor)
		ATOM_DECLARE_METHOD(setDefaultString, ATOM_Edit::setDefaultString)
		ATOM_DECLARE_METHOD(getDefaultString, Edit_GetDefaultString)
		ATOM_DECLARE_METHOD(getStringLength, ATOM_Edit::getStringLength)
		ATOM_DECLARE_METHOD(getCursorPosition, ATOM_Edit::getCursorPosition)
		ATOM_DECLARE_METHOD(setOffsetX, ATOM_Edit::setOffsetX)
		ATOM_DECLARE_METHOD(getOffsetX, ATOM_Edit::getOffsetX)
		ATOM_DECLARE_METHOD(setCursorImageId, ATOM_Edit::setCursorImageId)
		ATOM_DECLARE_METHOD(getCursorImageId, ATOM_Edit::getCursorImageId)
		ATOM_DECLARE_METHOD(setCursorOffset, ATOM_Edit::setCursorOffset)
		ATOM_DECLARE_METHOD(getCursorOffset, ATOM_Edit::getCursorOffset)
		ATOM_DECLARE_METHOD(setCursorWidth, ATOM_Edit::setCursorWidth)
		ATOM_DECLARE_METHOD(getCursorWidth, ATOM_Edit::getCursorWidth)
		ATOM_DECLARE_METHOD(setMaxLength, ATOM_Edit::setMaxLength)
		ATOM_DECLARE_METHOD(getMaxLength, ATOM_Edit::getMaxLength)
		ATOM_DECLARE_METHOD(insertText, ATOM_Edit::insertText)
		ATOM_DECLARE_METHOD(backSpace, ATOM_Edit::backSpace)
		ATOM_DECLARE_METHOD(deleteChar, ATOM_Edit::deleteChar)
		ATOM_DECLARE_METHOD(moveCursor, ATOM_Edit::moveCursor)
		ATOM_DECLARE_METHOD(setCursor, ATOM_Edit::setCursor)
		ATOM_DECLARE_METHOD(setOutlineColor, ATOM_Edit::setOutlineColor)
		ATOM_DECLARE_METHOD(getOutlineColor, ATOM_Edit::getOutlineColor)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Dialog, ATOM_Dialog, ATOM_TopWindow, ATOM_TopWindow)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_Dialog>)
		ATOM_DECLARE_METHOD(showModal, ATOM_Dialog::showModal)
		ATOM_DECLARE_METHOD(endModal, ATOM_Dialog::endModal)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Desktop, ATOM_Desktop, ATOM_TopWindow, ATOM_TopWindow)
		ATOM_DECLARE_METHOD(clearBackground, ATOM_Desktop::clearBackground)
		ATOM_DECLARE_METHOD(setClearBackground, ATOM_Desktop::setClearBackground)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_ComboBox, ATOM_ComboBox, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(ComboBox_Constructor)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ID_INPUTEDIT, ATOM_ComboBox::ID_INPUTEDIT)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ID_DROPDOWNBUTTON, ATOM_ComboBox::ID_DROPDOWNBUTTON)
		ATOM_DECLARE_METHOD(setButtonWidth, ATOM_ComboBox::setButtonWidth)
		ATOM_DECLARE_METHOD(getButtonWidth, ATOM_ComboBox::getButtonWidth)
		ATOM_DECLARE_METHOD(getInputEdit, ATOM_ComboBox::getInputEdit)
		ATOM_DECLARE_METHOD(getDropDownButton, ATOM_ComboBox::getDropDownButton)
		ATOM_DECLARE_METHOD(getDropDownList, ATOM_ComboBox::getDropDownList)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Checkbox, ATOM_Checkbox, ATOM_Label, ATOM_Label)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_Checkbox>)
		ATOM_DECLARE_METHOD(setCheckedImageId, ATOM_Checkbox::setCheckedImageId)
		ATOM_DECLARE_METHOD(getCheckedImageId, ATOM_Checkbox::getCheckedImageId)
		ATOM_DECLARE_METHOD(setChecked, ATOM_Checkbox::setChecked)
		ATOM_DECLARE_METHOD(getChecked, ATOM_Checkbox::getChecked)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Button, ATOM_Button, ATOM_Label, ATOM_Label)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_Button>)
		ATOM_DECLARE_STATIC_METHOD(setClickInterval, ATOM_Button::setClickInterval)
		ATOM_DECLARE_STATIC_METHOD(getClickInterval, ATOM_Button::getClickInterval)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Cell, ATOM_Cell, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_Cell>)
		ATOM_DECLARE_METHOD(setCellSize, ATOM_Cell::setCellSize)
		ATOM_DECLARE_METHOD(setCellWidth, ATOM_Cell::setCellWidth)
		ATOM_DECLARE_METHOD(setCellData, ATOM_Cell::setCellData)
		ATOM_DECLARE_METHOD(getCell, ATOM_Cell::getCell)
		ATOM_DECLARE_METHOD(setFont, ATOM_Cell::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_Cell::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_Cell::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_Cell::getFontColor)
		ATOM_DECLARE_METHOD(setAlign, ATOM_Cell::setAlign)
		ATOM_DECLARE_METHOD(getAlign, ATOM_Cell::getAlign)
		ATOM_DECLARE_METHOD(setOffset, ATOM_Cell::setOffset)
		ATOM_DECLARE_METHOD(getOffset, ATOM_Cell::getOffset)
		ATOM_DECLARE_METHOD(setCooldownImageId, ATOM_Cell::setCooldownImageId)
		ATOM_DECLARE_METHOD(getCooldownImageId, ATOM_Cell::getCooldownImageId)
		ATOM_DECLARE_METHOD(setSelectImageId, ATOM_Cell::setSelectImageId)
		ATOM_DECLARE_METHOD(getSelectImageId, ATOM_Cell::getSelectImageId)
		ATOM_DECLARE_METHOD(setFrameImageId, ATOM_Cell::setFrameImageId)
		ATOM_DECLARE_METHOD(getFrameImageId, ATOM_Cell::getFrameImageId)
		ATOM_DECLARE_METHOD(setFrameOffset, ATOM_Cell::setFrameOffset)
		ATOM_DECLARE_METHOD(getFrameOffset, ATOM_Cell::getFrameOffset)
		ATOM_DECLARE_METHOD(setSpaceX, ATOM_Cell::setSpaceX)
		ATOM_DECLARE_METHOD(getSpaceX, ATOM_Cell::getSpaceX)
		ATOM_DECLARE_METHOD(setSpaceY, ATOM_Cell::setSpaceY)
		ATOM_DECLARE_METHOD(getSpaceY, ATOM_Cell::getSpaceY)
		ATOM_DECLARE_METHOD(select, ATOM_Cell::select)
		ATOM_DECLARE_METHOD(enableSelect, ATOM_Cell::enableSelect)
		ATOM_DECLARE_METHOD(setOutlineColor, ATOM_Cell::setOutlineColor)
		ATOM_DECLARE_METHOD(getOutlineColor, ATOM_Cell::getOutlineColor)
		ATOM_DECLARE_METHOD(setCellFrameImageId,ATOM_Cell::setCellFrameImageId)
		ATOM_DECLARE_METHOD(getCellFrameImageId,ATOM_Cell::getCellFrameImageId)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_CellData, ATOM_CellData, ATOM_Label, ATOM_Label)
		ATOM_DECLARE_METHOD(setCooldown, ATOM_CellData::setCooldown)
		ATOM_DECLARE_METHOD(getCooldown, ATOM_CellData::getCooldown)
		ATOM_DECLARE_METHOD(setCooldownMax, ATOM_CellData::setCooldownMax)
		ATOM_DECLARE_METHOD(getCooldownMax, ATOM_CellData::getCooldownMax)
		ATOM_DECLARE_METHOD(setCooldownImageId, ATOM_CellData::setCooldownImageId)
		ATOM_DECLARE_METHOD(getCooldownImageId, ATOM_CellData::getCooldownImageId)
		ATOM_DECLARE_METHOD(setSelectImageId, ATOM_CellData::setSelectImageId)
		ATOM_DECLARE_METHOD(getSelectImageId, ATOM_CellData::getSelectImageId)
		ATOM_DECLARE_METHOD(setFrameImageId, ATOM_CellData::setFrameImageId)
		ATOM_DECLARE_METHOD(getFrameImageId, ATOM_CellData::getFrameImageId)
		ATOM_DECLARE_METHOD(setFrameOffset, ATOM_CellData::setFrameOffset)
		ATOM_DECLARE_METHOD(getFrameOffset, ATOM_CellData::getFrameOffset)
		ATOM_DECLARE_METHOD(allowClientDragging, ATOM_CellData::allowClientDragging)
		ATOM_DECLARE_METHOD(isClientDraggingAllowed, ATOM_CellData::isClientDraggingAllowed)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_TreeCtrl, ATOM_TreeCtrl, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(TreeCtrl_Constructor)
		ATOM_DECLARE_METHOD(setTextImageId, ATOM_TreeCtrl::setTextImageId)
		ATOM_DECLARE_METHOD(getTextImageId, ATOM_TreeCtrl::getTextImageId)
		ATOM_DECLARE_METHOD(setFont, ATOM_TreeCtrl::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_TreeCtrl::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_TreeCtrl::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_TreeCtrl::getFontColor)
		ATOM_DECLARE_METHOD(setOutlineColor, ATOM_TreeCtrl::setOutlineColor)
		ATOM_DECLARE_METHOD(getOutlineColor, ATOM_TreeCtrl::getOutlineColor)
		ATOM_DECLARE_METHOD(newItem, ATOM_TreeCtrl::newItem)
		ATOM_DECLARE_METHOD(deleteItem, ATOM_TreeCtrl::deleteItem)
		ATOM_DECLARE_METHOD(clear, ATOM_TreeCtrl::clear)
		ATOM_DECLARE_METHOD(selectItemById, TreeCtrl_SelectItemById)
		ATOM_DECLARE_METHOD(selectItem, TreeCtrl_SelectItem)
		ATOM_DECLARE_METHOD(getSelectedItem, ATOM_TreeCtrl::getSelectedItem)
		ATOM_DECLARE_METHOD(getFirstChildItem, ATOM_TreeCtrl::getFirstChildItem)
		ATOM_DECLARE_METHOD(getPrevSiblingItem, ATOM_TreeCtrl::getPrevSiblingItem)
		ATOM_DECLARE_METHOD(getNextSiblingItem, ATOM_TreeCtrl::getNextSiblingItem)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_TreeItem, ATOM_TreeItem, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_METHOD(select, ATOM_TreeItem::select)
		ATOM_DECLARE_METHOD(setText, ATOM_TreeItem::setText)
		ATOM_DECLARE_METHOD(setFont, ATOM_TreeItem::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_TreeItem::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_TreeItem::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_TreeItem::getFontColor)
		ATOM_DECLARE_METHOD(setOutlineColor, ATOM_TreeItem::setOutlineColor)
		ATOM_DECLARE_METHOD(getOutlineColor, ATOM_TreeItem::getOutlineColor)
		ATOM_DECLARE_METHOD(setExpandImageId, ATOM_TreeItem::setExpandImageId)
		ATOM_DECLARE_METHOD(getExpandImageId, ATOM_TreeItem::getExpandImageId)
		ATOM_DECLARE_METHOD(setUnexpandImageId, ATOM_TreeItem::setUnexpandImageId)
		ATOM_DECLARE_METHOD(getUnexpandImageId, ATOM_TreeItem::getUnexpandImageId)
		ATOM_DECLARE_METHOD(setIconSize, ATOM_TreeItem::setIconSize)
		ATOM_DECLARE_METHOD(getIconSize, ATOM_TreeItem::getIconSize)
		ATOM_DECLARE_METHOD(append, ATOM_TreeItem::append)
		ATOM_DECLARE_METHOD(remove, ATOM_TreeItem::remove)
		ATOM_DECLARE_METHOD(expand, ATOM_TreeItem::expand)
		ATOM_DECLARE_METHOD(getExpand, ATOM_TreeItem::getExpand)
		ATOM_DECLARE_METHOD(getRoot, ATOM_TreeItem::getRoot)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_ListBox, ATOM_ListBox, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(ListBox_Constructor)
		ATOM_DECLARE_STATIC_INT_CONSTANT(LBCLICK_NULL, LBCLICK_NULL)
		ATOM_DECLARE_STATIC_INT_CONSTANT(LBCLICK_LEFT, LBCLICK_LEFT)
		ATOM_DECLARE_STATIC_INT_CONSTANT(LBCLICK_RIGHT, LBCLICK_RIGHT)
		ATOM_DECLARE_METHOD(addItem, ATOM_ListBox::addItem)
		ATOM_DECLARE_METHOD(insertItem, ListBox_InsertItem)
		ATOM_DECLARE_METHOD(insertItemEx, ListBox_InsertItemEx)
		ATOM_DECLARE_METHOD(removeItem, ATOM_ListBox::removeItem)
		ATOM_DECLARE_METHOD(clearItem, ATOM_ListBox::clearItem)
		ATOM_DECLARE_METHOD(selectItem, ATOM_ListBox::selectItem)
		ATOM_DECLARE_METHOD(getSelectIndex, ATOM_ListBox::getSelectIndex)
		ATOM_DECLARE_METHOD(getItemHeight, ATOM_ListBox::getItemHeight)
		ATOM_DECLARE_METHOD(getItemCount, ATOM_ListBox::getItemCount)
		ATOM_DECLARE_METHOD(setSelectImageId, ATOM_ListBox::setSelectImageId)
		ATOM_DECLARE_METHOD(getSelectImageId, ATOM_ListBox::getSelectImageId)
		ATOM_DECLARE_METHOD(setHoverImageId, ATOM_ListBox::setHoverImageId)
		ATOM_DECLARE_METHOD(getHoverImageId, ATOM_ListBox::getHoverImageId)
		ATOM_DECLARE_METHOD(setItemText, ATOM_ListBox::setItemText)
		ATOM_DECLARE_METHOD(getItemData, ATOM_ListBox::getItemData)
		ATOM_DECLARE_METHOD(setItemData, ATOM_ListBox::setItemData)
		ATOM_DECLARE_METHOD(moveShowItemCursor, ATOM_ListBox::moveShowItemCursor)
		ATOM_DECLARE_METHOD(setFont, ATOM_ListBox::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_ListBox::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_ListBox::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_ListBox::getFontColor)
		ATOM_DECLARE_METHOD(setItemColor, ATOM_ListBox::setItemColor)
		ATOM_DECLARE_METHOD(getItemColor, ATOM_ListBox::getItemColor)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_ListView, ATOM_ListView, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_ListView>)
		ATOM_DECLARE_METHOD(setColumnCount, ATOM_ListView::setColumnCount)
		ATOM_DECLARE_METHOD(getColumnCount, ATOM_ListView::getColumnCount)
		ATOM_DECLARE_METHOD(setColumnWidth, ATOM_ListView::setColumnWidth)
		ATOM_DECLARE_METHOD(getColumnWidth, ATOM_ListView::getColumnWidth)
		ATOM_DECLARE_METHOD(clear, ATOM_ListView::clear)
		ATOM_DECLARE_METHOD(addRow, ATOM_ListView::addRow)
		ATOM_DECLARE_METHOD(setRowCount, ATOM_ListView::setRowCount)
		ATOM_DECLARE_METHOD(getRowCount, ATOM_ListView::getRowCount)
		ATOM_DECLARE_METHOD(setWidget, ATOM_ListView::setWidget)
		ATOM_DECLARE_METHOD(setLabel, ATOM_ListView::setLabel)
		ATOM_DECLARE_METHOD(setEdit, ATOM_ListView::setEdit)
		ATOM_DECLARE_METHOD(setButton, ATOM_ListView::setButton)
		ATOM_DECLARE_METHOD(setHSlider, ATOM_ListView::setHSlider)
		ATOM_DECLARE_METHOD(setHScrollBar, ATOM_ListView::setHScrollBar)
		ATOM_DECLARE_METHOD(setCheckbox, ATOM_ListView::setCheckbox)
		ATOM_DECLARE_METHOD(setComboBox, ATOM_ListView::setComboBox)
		ATOM_DECLARE_METHOD(getWidget, ATOM_ListView::getWidget)
		ATOM_DECLARE_METHOD(setFont, ATOM_ListView::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_ListView::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_ListView::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_ListView::getFontColor)
		ATOM_DECLARE_METHOD(setItemHeight, ATOM_ListView::setItemHeight)
		ATOM_DECLARE_METHOD(getItemHeight, ATOM_ListView::getItemHeight)
		ATOM_DECLARE_METHOD(setSelectImage, ATOM_ListView::setSelectImage)
		ATOM_DECLARE_METHOD(getSelectImage, ATOM_ListView::getSelectImage)
		ATOM_DECLARE_METHOD(select, ATOM_ListView::select)
		ATOM_DECLARE_METHOD(getSelect, ATOM_ListView::getSelect)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Slider, ATOM_Slider, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_Slider>)
		ATOM_DECLARE_METHOD(setVerticalHandleImageId, ATOM_Slider::setVerticalHandleImageId)
		ATOM_DECLARE_METHOD(getVerticalHandleImageId, ATOM_Slider::getVerticalHandleImageId)
		ATOM_DECLARE_METHOD(setHorizontalHandleImageId, ATOM_Slider::setHorizontalHandleImageId)
		ATOM_DECLARE_METHOD(getHorizontalHandleImageId, ATOM_Slider::getHorizontalHandleImageId)
		ATOM_DECLARE_METHOD(setVerticalSliderImageId, ATOM_Slider::setVerticalSliderImageId)
		ATOM_DECLARE_METHOD(getVerticalSliderImageId, ATOM_Slider::getVerticalSliderImageId)
		ATOM_DECLARE_METHOD(setHorizontalSliderImageId, ATOM_Slider::setHorizontalSliderImageId)
		ATOM_DECLARE_METHOD(getHorizontalSliderImageId, ATOM_Slider::getHorizontalSliderImageId)
		ATOM_DECLARE_METHOD(setRange, ATOM_Slider::setRange)
		ATOM_DECLARE_METHOD(getRangeMin, ATOM_Slider::getRangeMin)
		ATOM_DECLARE_METHOD(getRangeMax, ATOM_Slider::getRangeMax)
		ATOM_DECLARE_METHOD(setPosition, ATOM_Slider::setPosition)
		ATOM_DECLARE_METHOD(getPosition, ATOM_Slider::getPosition)
		ATOM_DECLARE_METHOD(setPlacement, ATOM_Slider::setPlacement)
		ATOM_DECLARE_METHOD(getPlacement, ATOM_Slider::getPlacement)
		ATOM_DECLARE_METHOD(setHandleWidth, ATOM_Slider::setHandleWidth)
		ATOM_DECLARE_METHOD(getHandleWidth, ATOM_Slider::getHandleWidth)
		ATOM_DECLARE_METHOD(showText, ATOM_Slider::showText)
		ATOM_DECLARE_METHOD(setFont, ATOM_Slider::setFont)
		ATOM_DECLARE_METHOD(getFont, ATOM_Slider::getFont)
		ATOM_DECLARE_METHOD(setFontColor, ATOM_Slider::setFontColor)
		ATOM_DECLARE_METHOD(getFontColor, ATOM_Slider::getFontColor)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_PropertyList, ATOM_PropertyList, ATOM_ListView, ATOM_ListView)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_PropertyList>)
		ATOM_DECLARE_METHOD(setColumnWidth, ATOM_PropertyList::setColumnWidth)
		ATOM_DECLARE_METHOD(setLabel, ATOM_PropertyList::setLabel)
		ATOM_DECLARE_METHOD(setEdit, ATOM_PropertyList::setEdit)
		ATOM_DECLARE_METHOD(setButton, ATOM_PropertyList::setButton)
		ATOM_DECLARE_METHOD(setHSlider, ATOM_PropertyList::setHSlider)
		ATOM_DECLARE_METHOD(setHScrollBar, ATOM_PropertyList::setHScrollBar)
		ATOM_DECLARE_METHOD(setCheckbox, ATOM_PropertyList::setCheckbox)
		ATOM_DECLARE_METHOD(getNameWidget, ATOM_PropertyList::getNameWidget)
		ATOM_DECLARE_METHOD(getValueWidget, ATOM_PropertyList::getValueWidget)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_ScrollMap, ATOM_ScrollMap, ATOM_Widget, ATOM_Widget)
		ATOM_DECLARE_CONSTRUCTOR(WidgetConstructor<ATOM_ScrollMap>)
		ATOM_DECLARE_METHOD(addImage, ATOM_ScrollMap::addImage)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT(ATOM_GUIRenderer, ATOM_GUIRenderer)
		ATOM_DECLARE_METHOD(render, ATOM_GUIRenderer::render)
		ATOM_DECLARE_METHOD(handleEvent, ATOM_GUIRenderer::handleEvent)
		ATOM_DECLARE_METHOD(setViewport, ATOM_GUIRenderer::setViewport)
		ATOM_DECLARE_METHOD(getViewport, ATOM_GUIRenderer::getViewport)
		ATOM_DECLARE_METHOD(getDesktop, ATOM_GUIRenderer::getDesktop)
		ATOM_DECLARE_METHOD(setFocus, ATOM_GUIRenderer::setFocus)
		ATOM_DECLARE_METHOD(getFocus, ATOM_GUIRenderer::getFocus)
		ATOM_DECLARE_METHOD(setCapture, ATOM_GUIRenderer::setCapture)
		ATOM_DECLARE_METHOD(getCapture, ATOM_GUIRenderer::getCapture)
		ATOM_DECLARE_METHOD(getHover, ATOM_GUIRenderer::getHover)
		ATOM_DECLARE_METHOD(getMousePosition, ATOM_GUIRenderer::getMousePosition)
		ATOM_DECLARE_METHOD(isLeftButtonDown, ATOM_GUIRenderer::isLeftButtonDown)
		ATOM_DECLARE_METHOD(isMiddleButtonDown, ATOM_GUIRenderer::isMiddleButtonDown)
		ATOM_DECLARE_METHOD(isRightButtonDown, ATOM_GUIRenderer::isRightButtonDown)
		ATOM_DECLARE_METHOD(getScissor, ATOM_GUIRenderer::getScissor)
		ATOM_DECLARE_METHOD(pushScissor, ATOM_GUIRenderer::pushScissor)
		ATOM_DECLARE_METHOD(popScissor, ATOM_GUIRenderer::popScissor)
		ATOM_DECLARE_METHOD(belongsTo, ATOM_GUIRenderer::belongsTo)
		ATOM_DECLARE_METHOD(invalidate, ATOM_GUIRenderer::invalidate)
		ATOM_DECLARE_METHOD(setRenderTargetWindow, ATOM_GUIRenderer::setRenderTargetWindow)
		ATOM_DECLARE_METHOD(getRenderTargetWindow, ATOM_GUIRenderer::getRenderTargetWindow)
		ATOM_DECLARE_METHOD(set3DMode, ATOM_GUIRenderer::set3DMode)
		ATOM_DECLARE_METHOD(is3DMode, ATOM_GUIRenderer::is3DMode)
		ATOM_DECLARE_METHOD(setZValue, ATOM_GUIRenderer::setZValue)
		ATOM_DECLARE_METHOD(getZValue, ATOM_GUIRenderer::getZValue)
		ATOM_DECLARE_METHOD(ignoreFog, ATOM_GUIRenderer::ignoreFog)
		ATOM_DECLARE_METHOD(isIgnoreFog, ATOM_GUIRenderer::isIgnoreFog)
		ATOM_DECLARE_METHOD(getCurrentModalDialog, ATOM_GUIRenderer::getCurrentModalDialog)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_GUIFont, ATOM_GUIFont)
		ATOM_DECLARE_STATIC_INT_CONSTANT(invalid_handle, ATOM_GUIFont::invalid_handle)
		ATOM_DECLARE_STATIC_METHOD(createFont, ATOM_GUIFont::createFont)
		ATOM_DECLARE_STATIC_METHOD(getDefaultFont, ATOM_GUIFont::getDefaultFont)
		ATOM_DECLARE_STATIC_METHOD(getFontHandle, ATOM_GUIFont::getFontHandle)
		ATOM_DECLARE_STATIC_METHOD(getFontCharSet, ATOM_GUIFont::getFontCharSet)
		ATOM_DECLARE_STATIC_METHOD(getFontCharMargin, ATOM_GUIFont::getFontCharMargin)
		ATOM_DECLARE_STATIC_METHOD(releaseFont, ATOM_GUIFont::releaseFont)
		ATOM_DECLARE_STATIC_METHOD(ensureValidFont, ATOM_GUIFont::ensureValidFont)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT(ATOM_GUIImageList, ATOM_GUIImageList)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_INVALID_IMAGEID, ATOM_INVALID_IMAGEID)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_WINDOW_BKGROUND, ATOM_IMAGEID_WINDOW_BKGROUND)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_CONTROL_BKGROUND, ATOM_IMAGEID_CONTROL_BKGROUND)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_LISTITEM, ATOM_IMAGEID_LISTITEM)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_LISTITEM_HILIGHT, ATOM_IMAGEID_LISTITEM_HILIGHT)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_MENUITEM, ATOM_IMAGEID_MENUITEM)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_MENUITEM_HILIGHT, ATOM_IMAGEID_MENUITEM_HILIGHT)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_MULTICHOICE_UNCHECKED, ATOM_IMAGEID_MULTICHOICE_UNCHECKED)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_MULTICHOICE_CHECKED, ATOM_IMAGEID_MULTICHOICE_CHECKED)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SINGLECHOICE_UNCHECKED, ATOM_IMAGEID_SINGLECHOICE_UNCHECKED)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SINGLECHOICE_CHECKED, ATOM_IMAGEID_SINGLECHOICE_CHECKED)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_TREEITEM, ATOM_IMAGEID_TREEITEM)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_TREEITEM_HILIGHT, ATOM_IMAGEID_TREEITEM_HILIGHT)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_TREEBUTTON_COLLAPSED, ATOM_IMAGEID_TREEBUTTON_COLLAPSED)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_TREEBUTTON_EXPANDED, ATOM_IMAGEID_TREEBUTTON_EXPANDED)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_PROGRESSBAR, ATOM_IMAGEID_PROGRESSBAR)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SCROLLBAR_HBUTTONUP, ATOM_IMAGEID_SCROLLBAR_HBUTTONUP)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SCROLLBAR_HBUTTONDOWN, ATOM_IMAGEID_SCROLLBAR_HBUTTONDOWN)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SCROLLBAR_HSLIDER, ATOM_IMAGEID_SCROLLBAR_HSLIDER)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SCROLLBAR_VBUTTONUP, ATOM_IMAGEID_SCROLLBAR_VBUTTONUP)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SCROLLBAR_VBUTTONDOWN, ATOM_IMAGEID_SCROLLBAR_VBUTTONDOWN)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SCROLLBAR_VSLIDER, ATOM_IMAGEID_SCROLLBAR_VSLIDER)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SLIDER_HANDLE, ATOM_IMAGEID_SLIDER_HANDLE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SLIDER_HRULER, ATOM_IMAGEID_SLIDER_HRULER)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_SLIDER_VRULER, ATOM_IMAGEID_SLIDER_VRULER)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_EDIT_CURSOR, ATOM_IMAGEID_EDIT_CURSOR)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_CHECKBOX_CHECKED, ATOM_IMAGEID_CHECKBOX_CHECKED)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_CHECKBOX_UNCHECKED, ATOM_IMAGEID_CHECKBOX_UNCHECKED)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_CHECKED, ATOM_IMAGEID_CHECKED)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_TREECTRL_COLLAPSED_IMAGE, ATOM_IMAGEID_TREECTRL_COLLAPSED_IMAGE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_TREECTRL_EXPANDED_IMAGE, ATOM_IMAGEID_TREECTRL_EXPANDED_IMAGE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_USER, ATOM_IMAGEID_USER)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ATOM_IMAGEID_APP, ATOM_IMAGEID_APP)
		ATOM_DECLARE_METHOD(load, ATOM_GUIImageList::load)
		ATOM_DECLARE_METHOD(getImage, ATOM_GUIImageList::getImage)
		ATOM_DECLARE_METHOD(newImage, ATOM_GUIImageList::newImage)
		ATOM_DECLARE_METHOD(newColorImage, ATOM_GUIImageList::newColorImage)
		ATOM_DECLARE_METHOD(newTextureImage, ATOM_GUIImageList::newTextureImage)
		ATOM_DECLARE_METHOD(newTextureImage9, ATOM_GUIImageList::newTextureImage9)
		ATOM_DECLARE_METHOD(newNullImage, ATOM_GUIImageList::newNullImage)
		ATOM_DECLARE_METHOD(newVGImage, ATOM_GUIImageList::newVGImage)
		ATOM_DECLARE_METHOD(removeImage, ATOM_GUIImageList::removeImage)
		ATOM_DECLARE_METHOD(clear, ATOM_GUIImageList::clear)
		ATOM_DECLARE_METHOD(loadDefaults, ATOM_GUIImageList::loadDefaults)
		ATOM_DECLARE_STATIC_METHOD(getDefaultImageList, ATOM_GUIImageList::getDefaultImageList)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Node, ATOM_Node, ATOM_Object, ATOM_Object)
		ATOM_DECLARE_STATIC_INT_CONSTANT(HIDE, ATOM_Node::HIDE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(SHOW, ATOM_Node::SHOW)
		ATOM_DECLARE_STATIC_INT_CONSTANT(HIDE_PICKABLE, ATOM_Node::HIDE_PICKABLE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(NONPICKABLE, ATOM_Node::NONPICKABLE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(PICKABLE, ATOM_Node::PICKABLE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(NONTOPMOST, ATOM_Node::NONTOPMOST)
		ATOM_DECLARE_STATIC_INT_CONSTANT(TOPMOST, ATOM_Node::TOPMOST)
		ATOM_DECLARE_STATIC_INT_CONSTANT(NONPROJECTABLE, ATOM_Node::NONPROJECTABLE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(PROJECTABLE, ATOM_Node::PROJECTABLE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(NONANTITOPMOST, ATOM_Node::NONANTITOPMOST)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ANTITOPMOST, ATOM_Node::ANTITOPMOST)
		ATOM_DECLARE_STATIC_INT_CONSTANT(INHERIT, ATOM_Node::INHERIT)
		ATOM_DECLARE_METHOD(getParent, ATOM_Node::getParent)
		ATOM_DECLARE_METHOD(setDescribe, Node_SetDescribe)
		ATOM_DECLARE_METHOD(getDescribe, Node_GetDescribe)
		ATOM_DECLARE_METHOD(invalidateBoundingbox, ATOM_Node::invalidateBoundingbox)
		ATOM_DECLARE_METHOD(getChangeStamp, ATOM_Node::getChangeStamp)
		ATOM_DECLARE_METHOD(setGameEntity, ATOM_Node::setGameEntity)
		ATOM_DECLARE_METHOD(getGameEntity, ATOM_Node::getGameEntity)
		ATOM_DECLARE_METHOD(load, ATOM_Node::load)
		ATOM_DECLARE_METHOD(loadFromFile, ATOM_Node::loadFromFile)
		ATOM_DECLARE_METHOD(mtload, Node_MTLoad)
		ATOM_DECLARE_METHOD(mtloadFromFile, Node_MTLoadFromFile)
		ATOM_DECLARE_METHOD(enableMTLoading, ATOM_Node::enableMTLoading)
		ATOM_DECLARE_METHOD(isMTLoadingEnabled, ATOM_Node::isMTLoadingEnabled)
		ATOM_DECLARE_METHOD(accept, Node_Accept)
		ATOM_DECLARE_METHOD(dump, ATOM_Node::dump)
		ATOM_DECLARE_METHOD_DEREF(clone, Node_Clone, ATOM_OBJECT_DEREF_FUNCNAME(ATOM_Node))
		ATOM_DECLARE_METHOD(supportMTLoading, ATOM_Node::supportMTLoading)
		ATOM_DECLARE_METHOD(getBoundingbox, ATOM_Node::getBoundingbox)
		ATOM_DECLARE_METHOD(getWorldBoundingbox, ATOM_Node::getWorldBoundingbox)
		ATOM_DECLARE_METHOD(getWorldMatrix, ATOM_Node::getWorldMatrix)
		ATOM_DECLARE_METHOD(getInvWorldMatrix, ATOM_Node::getInvWorldMatrix)
		ATOM_DECLARE_METHOD(enableGeometryClipping, ATOM_Node::enableGeometryClipping)
		ATOM_DECLARE_METHOD(isGeometryClippingEnabled, ATOM_Node::isGeometryClippingEnabled)
		ATOM_DECLARE_METHOD(supportFixedFunction, ATOM_Node::supportFixedFunction)
		ATOM_DECLARE_METHOD(appendChild, ATOM_Node::appendChild)
		ATOM_DECLARE_METHOD(removeChild, ATOM_Node::removeChild)
		ATOM_DECLARE_METHOD(getNumChildren, ATOM_Node::getNumChildren)
		ATOM_DECLARE_METHOD(getChild, ATOM_Node::getChild)
		ATOM_DECLARE_METHOD(clearChildren, ATOM_Node::clearChildren)
		ATOM_DECLARE_METHOD(hasChild, ATOM_Node::hasChild)
		ATOM_DECLARE_METHOD(getO2T, ATOM_Node::getO2T)
		ATOM_DECLARE_METHOD(setO2T, ATOM_Node::setO2T)
		ATOM_DECLARE_METHOD(getLoadInterface, ATOM_Node::getLoadInterface)
		ATOM_DECLARE_METHOD(getParent, ATOM_Node::getParent)
		ATOM_DECLARE_METHOD(getShow, ATOM_Node::getShow)
		ATOM_DECLARE_METHOD(getPickable, ATOM_Node::getPickable)
		ATOM_DECLARE_METHOD(setPickable, ATOM_Node::setPickable)
		ATOM_DECLARE_METHOD(setPickableRecursive, ATOM_Node::setPickableRecursive)
		ATOM_DECLARE_METHOD(setShow, ATOM_Node::setShow)
		ATOM_DECLARE_METHOD(getParent, ATOM_Node::getParent)
		ATOM_DECLARE_METHOD(setShowRecursive, ATOM_Node::setShowRecursive)
		ATOM_DECLARE_METHOD(isContributeCullingEnabled, ATOM_Node::isContributeCullingEnabled)
		ATOM_DECLARE_METHOD(enableContributeCulling, ATOM_Node::enableContributeCulling)
		ATOM_DECLARE_METHOD(enableContributeCullingRecursive, ATOM_Node::enableContributeCullingRecursive)
		ATOM_DECLARE_METHOD(getLayer, Node_GetLayer)
		ATOM_DECLARE_METHOD(setLayer, Node_SetLayer)
		ATOM_DECLARE_METHOD(ignoreFog, ATOM_Node::ignoreFog)
		ATOM_DECLARE_METHOD(ignoreFogRecursive, ATOM_Node::ignoreFogRecursive)
		ATOM_DECLARE_METHOD(isIgnoreFog, ATOM_Node::isIgnoreFog)
		ATOM_DECLARE_METHOD(setDrawBoundingbox, ATOM_Node::setDrawBoundingbox)
		ATOM_DECLARE_METHOD(getDrawBoundingbox, ATOM_Node::getDrawBoundingbox)
		ATOM_DECLARE_METHOD(setNoOccludedFrameStamp, ATOM_Node::setNoOccludedFrameStamp)
		ATOM_DECLARE_METHOD(getNoOccludedFrameStamp, ATOM_Node::getNoOccludedFrameStamp)
		ATOM_DECLARE_METHOD(setRotation, ATOM_Node::setRotation)
		ATOM_DECLARE_METHOD(getRotation, ATOM_Node::getRotation)
		ATOM_DECLARE_METHOD(setTranslation, ATOM_Node::setTranslation)
		ATOM_DECLARE_METHOD(getTranslation, ATOM_Node::getTranslation)
		ATOM_DECLARE_METHOD(setScale, ATOM_Node::setScale)
		ATOM_DECLARE_METHOD(getScale, ATOM_Node::getScale)
		ATOM_DECLARE_METHOD(getWorldScale, ATOM_Node::getWorldScale)
		ATOM_DECLARE_METHOD(setTopMost, ATOM_Node::setTopMost)
		ATOM_DECLARE_METHOD(getTopMost, ATOM_Node::getTopMost)
		ATOM_DECLARE_METHOD(setAntiTopMost, ATOM_Node::setAntiTopMost)
		ATOM_DECLARE_METHOD(getAntiTopMost, ATOM_Node::getAntiTopMost)
		ATOM_DECLARE_METHOD(setProjectable, ATOM_Node::setProjectable)
		ATOM_DECLARE_METHOD(getProjectable, ATOM_Node::getProjectable)
		ATOM_DECLARE_METHOD(setNodeFileName, Node_SetNodeFileName)
		ATOM_DECLARE_METHOD(getNodeFileName, Node_GetNodeFileName)
		ATOM_DECLARE_METHOD(checkNodeAllFinshed, ATOM_Node::checkNodeAllFinshed)
		ATOM_DECLARE_METHOD(checkNodeLoadFinshed, ATOM_Node::checkNodeLoadFinished)
		ATOM_DECLARE_STATIC_METHOD(registerNodeFileType, ATOM_Node::registerNodeFileType)
		ATOM_DECLARE_STATIC_METHOD(getNumRegisteredFileTypes, ATOM_Node::getNumRegisteredFileTypes)
		ATOM_DECLARE_STATIC_METHOD(loadNodeFromFile, Node_LoadNodeFromFile)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Geode, ATOM_Geode, ATOM_Geode, ATOM_Geode)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ACTIONFLAGS_UPSIDE, ATOM_Geode::ACTIONFLAGS_UPSIDE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ACTIONFLAGS_DOWNSIDE, ATOM_Geode::ACTIONFLAGS_DOWNSIDE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ACTIONFLAGS_FORCERESET, ATOM_Geode::ACTIONFLAGS_FORCERESET)
		ATOM_DECLARE_METHOD(getBoneIndex, ATOM_Geode::getBoneIndex)
		ATOM_DECLARE_METHOD(resetActions, ATOM_Geode::resetActions)
		ATOM_DECLARE_METHOD(doAction, ATOM_Geode::doAction)
		ATOM_DECLARE_METHOD(setDefaultActionSpeed, ATOM_Geode::setDefaultActionSpeed)
		ATOM_DECLARE_METHOD(setCurrentActionSpeed, ATOM_Geode::setCurrentActionSpeed)
		ATOM_DECLARE_METHOD(getActionMixer, ATOM_Geode::getActionMixer)
		ATOM_DECLARE_METHOD(enableManualBoneTransform, ATOM_Geode::enableManualBoneTransform)
		ATOM_DECLARE_METHOD(disableManualBoneTransform, ATOM_Geode::disableManualBoneTransform)
		ATOM_DECLARE_METHOD(isBoneManualTransformEnabled, ATOM_Geode::isBoneManualTransformEnabled)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_ActionMixer2, ATOM_ActionMixer2)
		ATOM_DECLARE_METHOD(setUpsideAction, ATOM_ActionMixer2::setUpsideAction)
		ATOM_DECLARE_METHOD(setDownsideAction, ATOM_ActionMixer2::setDownsideAction)
		ATOM_DECLARE_METHOD(resetUpsideAction, ATOM_ActionMixer2::resetUpsideAction)
		ATOM_DECLARE_METHOD(resetDownsideAction, ATOM_ActionMixer2::resetDownsideAction)
		ATOM_DECLARE_METHOD(setDefaultUpsideActionSpeed, ATOM_ActionMixer2::setDefaultUpsideActionSpeed)
		ATOM_DECLARE_METHOD(setDefaultDownsideActionSpeed, ATOM_ActionMixer2::setDefaultDownsideActionSpeed)
		ATOM_DECLARE_METHOD(setCurrentUpsideActionSpeed, ATOM_ActionMixer2::setCurrentUpsideActionSpeed)
		ATOM_DECLARE_METHOD(setCurrentDownsideActionSpeed, ATOM_ActionMixer2::setCurrentDownsideActionSpeed)
		ATOM_DECLARE_METHOD(updateActions, ATOM_ActionMixer2::updateActions)
		ATOM_DECLARE_METHOD(getBoundingbox, ATOM_ActionMixer2::getBoundingbox)
		ATOM_DECLARE_METHOD(getUpsideTrack, ATOM_ActionMixer2::getUpsideTrack)
		ATOM_DECLARE_METHOD(getDownsideTrack, ATOM_ActionMixer2::getDownsideTrack)
		ATOM_DECLARE_METHOD(getUpsideDesiredLoopCount, ATOM_ActionMixer2::getUpsideDesiredLoopCount)
		ATOM_DECLARE_METHOD(getDownsideDesiredLoopCount, ATOM_ActionMixer2::getDownsideDesiredLoopCount)
		ATOM_DECLARE_METHOD(getUpsideCurrentLoopCount, ATOM_ActionMixer2::getUpsideCurrentLoopCount)
		ATOM_DECLARE_METHOD(getDownsideCurrentLoopCount, ATOM_ActionMixer2::getDownsideCurrentLoopCount)
		ATOM_DECLARE_METHOD(getUpsideStartTick, ATOM_ActionMixer2::getUpsideStartTick)
		ATOM_DECLARE_METHOD(getDownsideStartTick, ATOM_ActionMixer2::getDownsideStartTick)
		ATOM_DECLARE_METHOD(isUpsideAnimating, ATOM_ActionMixer2::isUpsideAnimating)
		ATOM_DECLARE_METHOD(isDownsideAnimating, ATOM_ActionMixer2::isDownsideAnimating)
		ATOM_DECLARE_METHOD(isActionReady, ATOM_ActionMixer2::isActionReady)
		ATOM_DECLARE_METHOD(isBoundingboxOk, ATOM_ActionMixer2::isBoundingboxOk)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_InstanceTrack, ATOM_InstanceTrack)
		ATOM_DECLARE_METHOD(setTrack, ATOM_InstanceTrack::setTrack)
		ATOM_DECLARE_METHOD(getTrack, ATOM_InstanceTrack::getTrack)
		ATOM_DECLARE_METHOD(setComponents, ATOM_InstanceTrack::setComponents)
		ATOM_DECLARE_METHOD(getComponents, ATOM_InstanceTrack::getComponents)
		ATOM_DECLARE_METHOD(setId, ATOM_InstanceTrack::setId)
		ATOM_DECLARE_METHOD(getId, ATOM_InstanceTrack::getId)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_ModelAnimationTrack, ATOM_ModelAnimationTrack)
		ATOM_DECLARE_METHOD(getTotalAnimationTime, ATOM_ModelAnimationTrack::getTotalAnimationTime)
		ATOM_DECLARE_METHOD(invalidBoundingbox, ATOM_ModelAnimationTrack::invalidBoundingbox)
		ATOM_DECLARE_METHOD(setName, ATOM_ModelAnimationTrack::setName)
		ATOM_DECLARE_METHOD(getName, ATOM_ModelAnimationTrack::getName)
		ATOM_DECLARE_METHOD(setNumFrames, ATOM_ModelAnimationTrack::setNumFrames)
		ATOM_DECLARE_METHOD(getNumFrames, ATOM_ModelAnimationTrack::getNumFrames)
		ATOM_DECLARE_METHOD(setHashCode, ATOM_ModelAnimationTrack::setHashCode)
		ATOM_DECLARE_METHOD(getHashCode, ATOM_ModelAnimationTrack::getHashCode)
		ATOM_DECLARE_METHOD(dumpToFile, ATOM_ModelAnimationTrack::dumpToFile)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_InstanceMesh, ATOM_InstanceMesh)
		ATOM_DECLARE_METHOD(setComponents, ATOM_InstanceMesh::setComponents)
		ATOM_DECLARE_METHOD(getComponents, ATOM_InstanceMesh::getComponents)
		ATOM_DECLARE_METHOD(setId, ATOM_InstanceMesh::setId)
		ATOM_DECLARE_METHOD(getId, ATOM_InstanceMesh::getId)
		ATOM_DECLARE_METHOD(setIndex, ATOM_InstanceMesh::setIndex)
		ATOM_DECLARE_METHOD(getIndex, ATOM_InstanceMesh::getIndex)
		ATOM_DECLARE_METHOD(setWorldMatrix, ATOM_InstanceMesh::setWorldMatrix)
		ATOM_DECLARE_METHOD(getWorldMatrix, ATOM_InstanceMesh::getWorldMatrix)
		ATOM_DECLARE_METHOD(setVisible, ATOM_InstanceMesh::setVisible)
		ATOM_DECLARE_METHOD(getVisible, ATOM_InstanceMesh::getVisible)
		ATOM_DECLARE_METHOD(mapJoints, ATOM_InstanceMesh::mapJoints)
		ATOM_DECLARE_METHOD(invalidateMapJoints, ATOM_InstanceMesh::invalidateMapJoints)
		ATOM_DECLARE_METHOD(setDiffuseColor, ATOM_InstanceMesh::setDiffuseColor)
		ATOM_DECLARE_METHOD(setAlphaRef, ATOM_InstanceMesh::setAlphaRef)
		ATOM_DECLARE_METHOD(setShininess, ATOM_InstanceMesh::setShininess)
		ATOM_DECLARE_METHOD(setGlareMap, ATOM_InstanceMesh::setGlareMap)
		ATOM_DECLARE_METHOD(setGlareVelocity, ATOM_InstanceMesh::setGlareVelocity)
		ATOM_DECLARE_METHOD(setGlareRepeat, ATOM_InstanceMesh::setGlareRepeat)
		ATOM_DECLARE_METHOD(setAlbedoMap, ATOM_InstanceMesh::setAlbedoMap)
		ATOM_DECLARE_METHOD(getDiffuseColor, ATOM_InstanceMesh::getDiffuseColor)
		ATOM_DECLARE_METHOD(getAlphaRef, ATOM_InstanceMesh::getAlphaRef)
		ATOM_DECLARE_METHOD(getShininess, ATOM_InstanceMesh::getShininess)
		ATOM_DECLARE_METHOD(getGlareMap, ATOM_InstanceMesh::getGlareMap)
		ATOM_DECLARE_METHOD(getGlareVelocity, ATOM_InstanceMesh::getGlareVelocity)
		ATOM_DECLARE_METHOD(getGlareRepeat, ATOM_InstanceMesh::getGlareRepeat)
		ATOM_DECLARE_METHOD(getAlbedoMap, ATOM_InstanceMesh::getAlbedoMap)
		ATOM_DECLARE_METHOD(getNode, ATOM_InstanceMesh::getNode)
		ATOM_DECLARE_METHOD(canBatch, ATOM_InstanceMesh::canBatch)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_InstanceSkeleton, ATOM_InstanceSkeleton)
		ATOM_DECLARE_METHOD(setSkeleton, ATOM_InstanceSkeleton::setSkeleton)
		ATOM_DECLARE_METHOD(getSkeleton, ATOM_InstanceSkeleton::getSkeleton)
		ATOM_DECLARE_METHOD(setComponents, ATOM_InstanceSkeleton::setComponents)
		ATOM_DECLARE_METHOD(getComponents, ATOM_InstanceSkeleton::getComponents)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_Skeleton, ATOM_Skeleton)
		ATOM_DECLARE_METHOD(getHashCode, ATOM_Skeleton::getHashCode)
		ATOM_DECLARE_METHOD(setHashCode, ATOM_Skeleton::setHashCode)
		ATOM_DECLARE_METHOD(addAttachPoint, ATOM_Skeleton::addAttachPoint)
		ATOM_DECLARE_METHOD(removeAttachPoint, ATOM_Skeleton::removeAttachPoint)
		ATOM_DECLARE_METHOD(clearAttachPoints, ATOM_Skeleton::clearAttachPoints)
		ATOM_DECLARE_METHOD(getNumAttachPoints, ATOM_Skeleton::getNumAttachPoints)
		ATOM_DECLARE_METHOD(getAttachPointIndex, ATOM_Skeleton::getAttachPointIndex)
		ATOM_DECLARE_METHOD(getNumJoints, ATOM_Skeleton::getNumJoints)
		ATOM_DECLARE_METHOD(setNumJoints, ATOM_Skeleton::setNumJoints)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_CLASS_NOPARENT(ATOM_Components, ATOM_Components)
		ATOM_DECLARE_METHOD(getNumMeshes, ATOM_Components::getNumMeshes)
		ATOM_DECLARE_METHOD(getNumTracks, ATOM_Components::getNumTracks)
		ATOM_DECLARE_METHOD(getMesh, ATOM_Components::getMesh)
		ATOM_DECLARE_METHOD(getTrack, ATOM_Components::getTrack)
		ATOM_DECLARE_METHOD(getSkeleton, ATOM_Components::getSkeleton)
		ATOM_DECLARE_METHOD(setModel, ATOM_Components::setModel)
		ATOM_DECLARE_METHOD(getModel, ATOM_Components::getModel)
		ATOM_DECLARE_METHOD(loadComponents, Components_LoadComponents)
		ATOM_DECLARE_METHOD(isValid, ATOM_Components::isValid)
		ATOM_DECLARE_METHOD(reset, ATOM_Components::reset)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_Scene, ATOM_Scene)
		ATOM_DECLARE_METHOD(getRootNode, ATOM_Scene::getRootNode)
		ATOM_DECLARE_METHOD(getCamera, ATOM_Scene::getCamera)
		ATOM_DECLARE_METHOD(render, ATOM_Scene::render)
		ATOM_DECLARE_METHOD(save, ATOM_Scene::save)
		ATOM_DECLARE_METHOD(resizeView, ATOM_Scene::resizeView)
		ATOM_DECLARE_METHOD(load, Scene_Load)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOCONSTRUCTOR(ATOM_SDLScene, ATOM_SDLScene, ATOM_Scene, ATOM_Scene)
		ATOM_DECLARE_METHOD(getLight, ATOM_SDLScene::getLight)
		ATOM_DECLARE_METHOD(setLightDirKey, ATOM_SDLScene::setLightDirKey)
		ATOM_DECLARE_METHOD(getLightDirKey, ATOM_SDLScene::getLightDirKey)
		ATOM_DECLARE_METHOD(setLightColorKey, ATOM_SDLScene::setLightColorKey)
		ATOM_DECLARE_METHOD(getLightColorKey, ATOM_SDLScene::getLightColorKey)
		ATOM_DECLARE_METHOD(setGlobalLightColorKey, ATOM_SDLScene::setGlobalLightColorKey)
		ATOM_DECLARE_METHOD(getGlobalLightColorKey, ATOM_SDLScene::getGlobalLightColorKey)
		ATOM_DECLARE_METHOD(getAmbientLight, ATOM_SDLScene::getAmbientLight)
		ATOM_DECLARE_METHOD(setBloomThreshold, ATOM_SDLScene::setBloomThreshold)
		ATOM_DECLARE_METHOD(getBloomThreshold, ATOM_SDLScene::getBloomThreshold)
		ATOM_DECLARE_METHOD(setBloomOffset, ATOM_SDLScene::setBloomOffset)
		ATOM_DECLARE_METHOD(getBloomOffset, ATOM_SDLScene::getBloomOffset)
		ATOM_DECLARE_METHOD(setSplitLambda, ATOM_SDLScene::setSplitLambda)
		ATOM_DECLARE_METHOD(getSplitLambda, ATOM_SDLScene::getSplitLambda)
		ATOM_DECLARE_METHOD(setShadowDistance, ATOM_SDLScene::setShadowDistance)
		ATOM_DECLARE_METHOD(getShadowDistance, ATOM_SDLScene::getShadowDistance)
		ATOM_DECLARE_METHOD(setSceneScale, ATOM_SDLScene::setSceneScale)
		ATOM_DECLARE_METHOD(getSceneScale, ATOM_SDLScene::getSceneScale)
		ATOM_DECLARE_METHOD(setLightSize, ATOM_SDLScene::setLightSize)
		ATOM_DECLARE_METHOD(getLightSize, ATOM_SDLScene::getLightSize)
		ATOM_DECLARE_METHOD(setDepthBias, ATOM_SDLScene::setDepthBias)
		ATOM_DECLARE_METHOD(getDepthBias, ATOM_SDLScene::getDepthBias)
		ATOM_DECLARE_METHOD(getPrecalculatedBoundingBox, ATOM_SDLScene::getPrecalculatedBoundingBox)
		ATOM_DECLARE_METHOD(calculateBoundingBox, ATOM_SDLScene::calculateBoundingBox)
		ATOM_DECLARE_CONSTRUCTOR_DEREF(SDLScene_Constructor, ATOM_DELETE_DEREF_FUNCNAME(ATOM_SDLScene))
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOCONSTRUCTOR(ATOM_DeferredScene, ATOM_DeferredScene, ATOM_SDLScene, ATOM_SDLScene)
		ATOM_DECLARE_CONSTRUCTOR_DEREF(DeferredScene_Constructor, ATOM_DELETE_DEREF_FUNCNAME(ATOM_DeferredScene))
	ATOM_SCRIPT_END_CLASS()

#if 0
	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Tree, ATOM_Tree, ATOM_Node, ATOM_Node)
		ATOM_DECLARE_METHOD(skipClipTest, ATOM_Tree::skipClipTest)
		ATOM_DECLARE_METHOD(isSkipClipTest, ATOM_Tree::isSkipClipTest)
		ATOM_DECLARE_METHOD(setLODDistance, ATOM_Tree::setLODDistance)
		ATOM_DECLARE_METHOD(getLODDistance, ATOM_Tree::getLODDistance)
	ATOM_SCRIPT_END_CLASS()
#endif
	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Water, ATOM_Water, ATOM_Node, ATOM_Node)
		ATOM_DECLARE_METHOD(setNormalScale, ATOM_Water::setNormalScale)
		ATOM_DECLARE_METHOD(getNormalScale, ATOM_Water::getNormalScale)
		ATOM_DECLARE_METHOD(setSurfaceColor, ATOM_Water::setSurfaceColor)
		ATOM_DECLARE_METHOD(getSurfaceColor, ATOM_Water::getSurfaceColor)
		ATOM_DECLARE_METHOD(setDepthColor, ATOM_Water::setDepthColor)
		ATOM_DECLARE_METHOD(getDepthColor, ATOM_Water::getDepthColor)
		ATOM_DECLARE_METHOD(setExtinction, ATOM_Water::setExtinction)
		ATOM_DECLARE_METHOD(getExtinction, ATOM_Water::getExtinction)
		ATOM_DECLARE_METHOD(setVisibility, ATOM_Water::setVisibility)
		ATOM_DECLARE_METHOD(getVisibility, ATOM_Water::getVisibility)
		ATOM_DECLARE_METHOD(setSunScale, ATOM_Water::setSunScale)
		ATOM_DECLARE_METHOD(getSunScale, ATOM_Water::getSunScale)
		ATOM_DECLARE_METHOD(setFadeSpeed, ATOM_Water::setFadeSpeed)
		ATOM_DECLARE_METHOD(getFadeSpeed, ATOM_Water::getFadeSpeed)
		ATOM_DECLARE_METHOD(setR0, ATOM_Water::setR0)
		ATOM_DECLARE_METHOD(getR0, ATOM_Water::getR0)
		ATOM_DECLARE_METHOD(setShininess, ATOM_Water::setShininess)
		ATOM_DECLARE_METHOD(getShininess, ATOM_Water::getShininess)
		ATOM_DECLARE_METHOD(setRefractionStrength, ATOM_Water::setRefractionStrength)
		ATOM_DECLARE_METHOD(getRefractionStrength, ATOM_Water::getRefractionStrength)
		ATOM_DECLARE_METHOD(setShoreHardness, ATOM_Water::setShoreHardness)
		ATOM_DECLARE_METHOD(getShoreHardness, ATOM_Water::getShoreHardness)
		ATOM_DECLARE_METHOD(setFoamExistence, ATOM_Water::setFoamExistence)
		ATOM_DECLARE_METHOD(getFoamExistence, ATOM_Water::getFoamExistence)
		ATOM_DECLARE_METHOD(setFoamTexture, ATOM_Water::setFoamTexture)
		ATOM_DECLARE_METHOD(getFoamTexture, ATOM_Water::getFoamTexture)
		ATOM_DECLARE_METHOD(setFoamTextureFileName, Water_SetFoamTextureFileName)
		ATOM_DECLARE_METHOD(getFoamTextureFileName, Water_GetFoamTextureFileName)
		ATOM_DECLARE_METHOD(setHeightModifier, ATOM_Water::setHeightModifier)
		ATOM_DECLARE_METHOD(getHeightModifier, ATOM_Water::getHeightModifier)
		ATOM_DECLARE_METHOD(setWaveScaleX, ATOM_Water::setWaveScaleX)
		ATOM_DECLARE_METHOD(getWaveScaleX, ATOM_Water::getWaveScaleX)
		ATOM_DECLARE_METHOD(setWaveScaleZ, ATOM_Water::setWaveScaleZ)
		ATOM_DECLARE_METHOD(getWaveScaleZ, ATOM_Water::getWaveScaleZ)
		ATOM_DECLARE_METHOD(setWaveHeight, ATOM_Water::setWaveHeight)
		ATOM_DECLARE_METHOD(getWaveHeight, ATOM_Water::getWaveHeight)
		ATOM_DECLARE_METHOD(setDisplace, ATOM_Water::setDisplace)
		ATOM_DECLARE_METHOD(getDisplace, ATOM_Water::getDisplace)
		ATOM_DECLARE_METHOD(getHeightTexture, ATOM_Water::getHeightTexture)
		ATOM_DECLARE_METHOD(getNormalTexture, ATOM_Water::getNormalTexture)
		ATOM_DECLARE_METHOD(setWindDirection, ATOM_Water::setWindDirection)
		ATOM_DECLARE_METHOD(getWindDirection, ATOM_Water::getWindDirection)
		ATOM_DECLARE_METHOD(setWindStrength, ATOM_Water::setWindStrength)
		ATOM_DECLARE_METHOD(getWindStrength, ATOM_Water::getWindStrength)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_ParticleSystem, ATOM_ParticleSystem, ATOM_Node, ATOM_Node)
		ATOM_DECLARE_STATIC_INT_CONSTANT(PS_DIRECTIONAL_PARTICLE, ATOM_ParticleSystem::PS_DIRECTIONAL_PARTICLE)
		ATOM_DECLARE_STATIC_INT_CONSTANT(PS_BLEND_NORMAL, ATOM_ParticleSystem::PS_BLEND_NORMAL)
		ATOM_DECLARE_STATIC_INT_CONSTANT(PS_BLEND_ADD, ATOM_ParticleSystem::PS_BLEND_ADD)
		ATOM_DECLARE_STATIC_INT_CONSTANT(PS_BLEND_BLENDADD, ATOM_ParticleSystem::PS_BLEND_BLENDADD)
		ATOM_DECLARE_STATIC_INT_CONSTANT(PS_FOG, ATOM_ParticleSystem::PS_FOG)
		ATOM_DECLARE_STATIC_INT_CONSTANT(PS_WORLDSPACE, ATOM_ParticleSystem::PS_WORLDSPACE)
		ATOM_DECLARE_METHOD(setFlags, ATOM_ParticleSystem::setFlags)
		ATOM_DECLARE_METHOD(getFlags, ATOM_ParticleSystem::getFlags)
		ATOM_DECLARE_METHOD(setMaxParticleCount, ATOM_ParticleSystem::setMaxParticleCount)
		ATOM_DECLARE_METHOD(getMaxParticleCount, ATOM_ParticleSystem::getMaxParticleCount)
		ATOM_DECLARE_METHOD(setUpdateInterval, ATOM_ParticleSystem::setUpdateInterval)
		ATOM_DECLARE_METHOD(getUpdateInterval, ATOM_ParticleSystem::getUpdateInterval)
		ATOM_DECLARE_METHOD(setEmitInterval, ATOM_ParticleSystem::setEmitInterval)
		ATOM_DECLARE_METHOD(getEmitInterval, ATOM_ParticleSystem::getEmitInterval)
		ATOM_DECLARE_METHOD(setEmitCount, ATOM_ParticleSystem::setEmitCount)
		ATOM_DECLARE_METHOD(getEmitCount, ATOM_ParticleSystem::getEmitCount)
		ATOM_DECLARE_METHOD(setGravity, ATOM_ParticleSystem::setGravity)
		ATOM_DECLARE_METHOD(getGravity, ATOM_ParticleSystem::getGravity)
		ATOM_DECLARE_METHOD(setWind, ATOM_ParticleSystem::setWind)
		ATOM_DECLARE_METHOD(getWind, ATOM_ParticleSystem::getWind)
		ATOM_DECLARE_METHOD(setTextureFileName, ParticleSystem_SetTextureFileName)
		ATOM_DECLARE_METHOD(getTextureFileName, ParticleSystem_GetTextureFileName)
		ATOM_DECLARE_METHOD(setColorFileName, ParticleSystem_SetColorFileName)
		ATOM_DECLARE_METHOD(getColorFileName, ParticleSystem_GetColorFileName)
		ATOM_DECLARE_METHOD(setRotationVelocity, ATOM_ParticleSystem::setRotationVelocity)
		ATOM_DECLARE_METHOD(getRotationVelocity, ATOM_ParticleSystem::getRotationVelocity)
		ATOM_DECLARE_METHOD(setRotationVelocityVar, ATOM_ParticleSystem::setRotationVelocityVar)
		ATOM_DECLARE_METHOD(getRotationVelocityVar, ATOM_ParticleSystem::getRotationVelocityVar)
		ATOM_DECLARE_METHOD(reset, ATOM_ParticleSystem::reset)
		ATOM_DECLARE_METHOD(getActiveParticleCount, ATOM_ParticleSystem::getActiveParticleCount)
		ATOM_DECLARE_METHOD(setScalar, ATOM_ParticleSystem::setScalar)
		ATOM_DECLARE_METHOD(getScalar, ATOM_ParticleSystem::getScalar)
		ATOM_DECLARE_METHOD(setAspect, ATOM_ParticleSystem::setAspect)
		ATOM_DECLARE_METHOD(getAspect, ATOM_ParticleSystem::getAspect)
		ATOM_DECLARE_METHOD(setJitterSpeed, ATOM_ParticleSystem::setJitterSpeed)
		ATOM_DECLARE_METHOD(getJitterSpeed, ATOM_ParticleSystem::getJitterSpeed)
		ATOM_DECLARE_METHOD(setJitterPower, ATOM_ParticleSystem::setJitterPower)
		ATOM_DECLARE_METHOD(getJitterPower, ATOM_ParticleSystem::getJitterPower)
		ATOM_DECLARE_METHOD(pause, ATOM_ParticleSystem::pause)
		ATOM_DECLARE_METHOD(resume, ATOM_ParticleSystem::resume)
		ATOM_DECLARE_METHOD(paused, ATOM_ParticleSystem::paused)
		ATOM_DECLARE_METHOD(getStartTick, ATOM_ParticleSystem::getStartTick)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_LightNode, ATOM_LightNode, ATOM_Node, ATOM_Node)
		ATOM_DECLARE_METHOD(setLightType, ATOM_LightNode::setLightType)
		ATOM_DECLARE_METHOD(getLightType, ATOM_LightNode::getLightType)
		ATOM_DECLARE_METHOD(setLightColor, ATOM_LightNode::setLightColor)
		ATOM_DECLARE_METHOD(getLightColor, ATOM_LightNode::getLightColor)
		ATOM_DECLARE_METHOD(setLightIntensity, ATOM_LightNode::setLightIntensity)
		ATOM_DECLARE_METHOD(getLightIntensity, ATOM_LightNode::getLightIntensity)
		ATOM_DECLARE_METHOD(setLightAttenuation, ATOM_LightNode::setLightAttenuation)
		ATOM_DECLARE_METHOD(getLightAttenuation, ATOM_LightNode::getLightAttenuation)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Terrain, ATOM_Terrain, ATOM_Node, ATOM_Node)
		ATOM_DECLARE_METHOD(setMaxPixelError, ATOM_Terrain::setMaxPixelError)
		ATOM_DECLARE_METHOD(getMaxPixelError, ATOM_Terrain::getMaxPixelError)
		ATOM_DECLARE_METHOD(setDrawGrass, ATOM_Terrain::setDrawGrass)
		ATOM_DECLARE_METHOD(getDrawGrass, ATOM_Terrain::getDrawGrass)
		ATOM_DECLARE_METHOD(setDrawDetail, ATOM_Terrain::setDrawDetail)
		ATOM_DECLARE_METHOD(getDrawDetail, ATOM_Terrain::getDrawDetail)
		ATOM_DECLARE_METHOD(setDetailDistance, ATOM_Terrain::setDetailDistance)
		ATOM_DECLARE_METHOD(getDetailDistance, ATOM_Terrain::getDetailDistance)
		ATOM_DECLARE_METHOD(setDetailLodLevel, ATOM_Terrain::setDetailLodLevel)
		ATOM_DECLARE_METHOD(getDetailLodLevel, ATOM_Terrain::getDetailLodLevel)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Atmosphere, ATOM_Atmosphere, ATOM_Node, ATOM_Node)
		ATOM_DECLARE_METHOD(setSunIntensityKey, ATOM_Atmosphere::setSunIntensityKey)
		ATOM_DECLARE_METHOD(setGKey, ATOM_Atmosphere::setGKey)
		ATOM_DECLARE_METHOD(setMieMultiplierKey, ATOM_Atmosphere::setMieMultiplierKey)
		ATOM_DECLARE_METHOD(setRayleighMultiplierKey, ATOM_Atmosphere::setRayleighMultiplierKey)
		ATOM_DECLARE_METHOD(setExposureKey, ATOM_Atmosphere::setExposureKey)
		ATOM_DECLARE_METHOD(setLambdaRedKey, ATOM_Atmosphere::setLambdaRedKey)
		ATOM_DECLARE_METHOD(setLambdaGreenKey, ATOM_Atmosphere::setLambdaGreenKey)
		ATOM_DECLARE_METHOD(setLambdaBlueKey, ATOM_Atmosphere::setLambdaBlueKey)
		ATOM_DECLARE_METHOD(setScaleDepthKey, ATOM_Atmosphere::setScaleDepthKey)
		ATOM_DECLARE_METHOD(setCameraHeightKey, ATOM_Atmosphere::setCameraHeightKey)
		ATOM_DECLARE_METHOD(setSkydomeRadiusKey, ATOM_Atmosphere::setSkydomeRadiusKey)
		ATOM_DECLARE_METHOD(setFadeNearKey, ATOM_Atmosphere::setFadeNearKey)
		ATOM_DECLARE_METHOD(setFadeFarKey, ATOM_Atmosphere::setFadeFarKey)
		ATOM_DECLARE_METHOD(setCloudCoverageKey, ATOM_Atmosphere::setCloudCoverageKey)
		ATOM_DECLARE_METHOD(setCloudSharpnessKey, ATOM_Atmosphere::setCloudSharpnessKey)
		ATOM_DECLARE_METHOD(setCloudBrightnessKey, ATOM_Atmosphere::setCloudBrightnessKey)
		ATOM_DECLARE_METHOD(setCloudMoveSpeedKey, ATOM_Atmosphere::setCloudMoveSpeedKey)
		ATOM_DECLARE_METHOD(setCloudMoveDirKey, ATOM_Atmosphere::setCloudMoveDirKey)
		ATOM_DECLARE_METHOD(setCloudColorKey, ATOM_Atmosphere::setCloudColorKey)
		ATOM_DECLARE_METHOD(setCloudDeformSpeedKey, ATOM_Atmosphere::setCloudDeformSpeedKey)
		ATOM_DECLARE_METHOD(setMoonColorKey, ATOM_Atmosphere::setMoonColorKey)
		ATOM_DECLARE_METHOD(setMoonDirKey, ATOM_Atmosphere::setMoonDirKey)
		ATOM_DECLARE_METHOD(setMoonSizeKey, ATOM_Atmosphere::setMoonSizeKey)
		ATOM_DECLARE_METHOD(getSunIntensityKey, ATOM_Atmosphere::getSunIntensityKey)
		ATOM_DECLARE_METHOD(getGKey, ATOM_Atmosphere::getGKey)
		ATOM_DECLARE_METHOD(getMieMultiplierKey, ATOM_Atmosphere::getMieMultiplierKey)
		ATOM_DECLARE_METHOD(getRayleighMultiplierKey, ATOM_Atmosphere::getRayleighMultiplierKey)
		ATOM_DECLARE_METHOD(getExposureKey, ATOM_Atmosphere::getExposureKey)
		ATOM_DECLARE_METHOD(getLambdaRedKey, ATOM_Atmosphere::getLambdaRedKey)
		ATOM_DECLARE_METHOD(getLambdaGreenKey, ATOM_Atmosphere::getLambdaGreenKey)
		ATOM_DECLARE_METHOD(getLambdaBlueKey, ATOM_Atmosphere::getLambdaBlueKey)
		ATOM_DECLARE_METHOD(getScaleDepthKey, ATOM_Atmosphere::getScaleDepthKey)
		ATOM_DECLARE_METHOD(getCameraHeightKey, ATOM_Atmosphere::getCameraHeightKey)
		ATOM_DECLARE_METHOD(getSkydomeRadiusKey, ATOM_Atmosphere::getSkydomeRadiusKey)
		ATOM_DECLARE_METHOD(getFadeNearKey, ATOM_Atmosphere::getFadeNearKey)
		ATOM_DECLARE_METHOD(getFadeFarKey, ATOM_Atmosphere::getFadeFarKey)
		ATOM_DECLARE_METHOD(getCloudCoverageKey, ATOM_Atmosphere::getCloudCoverageKey)
		ATOM_DECLARE_METHOD(getCloudSharpnessKey, ATOM_Atmosphere::getCloudSharpnessKey)
		ATOM_DECLARE_METHOD(getCloudBrightnessKey, ATOM_Atmosphere::getCloudBrightnessKey)
		ATOM_DECLARE_METHOD(getCloudMoveSpeedKey, ATOM_Atmosphere::getCloudMoveSpeedKey)
		ATOM_DECLARE_METHOD(getCloudMoveDirKey, ATOM_Atmosphere::getCloudMoveDirKey)
		ATOM_DECLARE_METHOD(getCloudColorKey, ATOM_Atmosphere::getCloudColorKey)
		ATOM_DECLARE_METHOD(getCloudDeformSpeedKey, ATOM_Atmosphere::getCloudDeformSpeedKey)
		ATOM_DECLARE_METHOD(getMoonColorKey, ATOM_Atmosphere::getMoonColorKey)
		ATOM_DECLARE_METHOD(getMoonDirKey, ATOM_Atmosphere::getMoonDirKey)
		ATOM_DECLARE_METHOD(getMoonSizeKey, ATOM_Atmosphere::getMoonSizeKey)
		ATOM_DECLARE_METHOD(getSunIntensity, ATOM_Atmosphere::getSunIntensity)
		ATOM_DECLARE_METHOD(getG, ATOM_Atmosphere::getG)
		ATOM_DECLARE_METHOD(getMieMultiplier, ATOM_Atmosphere::getMieMultiplier)
		ATOM_DECLARE_METHOD(getRayleighMultiplier, ATOM_Atmosphere::getRayleighMultiplier)
		ATOM_DECLARE_METHOD(getExposure, ATOM_Atmosphere::getExposure)
		ATOM_DECLARE_METHOD(getLambdaRed, ATOM_Atmosphere::getLambdaRed)
		ATOM_DECLARE_METHOD(getLambdaGreen, ATOM_Atmosphere::getLambdaGreen)
		ATOM_DECLARE_METHOD(getLambdaBlue, ATOM_Atmosphere::getLambdaBlue)
		ATOM_DECLARE_METHOD(getScaleDepth, ATOM_Atmosphere::getScaleDepth)
		ATOM_DECLARE_METHOD(getCameraHeight, ATOM_Atmosphere::getCameraHeight)
		ATOM_DECLARE_METHOD(getInnerRadius, ATOM_Atmosphere::getInnerRadius)
		ATOM_DECLARE_METHOD(getOuterRadius, ATOM_Atmosphere::getOuterRadius)
		ATOM_DECLARE_METHOD(getSkydomeRadius, ATOM_Atmosphere::getSkydomeRadius)
		ATOM_DECLARE_METHOD(getFadeNear, ATOM_Atmosphere::getFadeNear)
		ATOM_DECLARE_METHOD(getFadeFar, ATOM_Atmosphere::getFadeFar)
		ATOM_DECLARE_METHOD(getCloudCoverage, ATOM_Atmosphere::getCloudCoverage)
		ATOM_DECLARE_METHOD(getCloudSharpness, ATOM_Atmosphere::getCloudSharpness)
		ATOM_DECLARE_METHOD(getCloudBrightness, ATOM_Atmosphere::getCloudBrightness)
		ATOM_DECLARE_METHOD(getCloudMoveSpeed, ATOM_Atmosphere::getCloudMoveSpeed)
		ATOM_DECLARE_METHOD(getCloudMoveDir, ATOM_Atmosphere::getCloudMoveDir)
		ATOM_DECLARE_METHOD(getCloudColor, ATOM_Atmosphere::getCloudColor)
		ATOM_DECLARE_METHOD(getCloudDeformSpeed, ATOM_Atmosphere::getCloudDeformSpeed)
		ATOM_DECLARE_METHOD(getMoonColor, ATOM_Atmosphere::getMoonColor)
		ATOM_DECLARE_METHOD(getMoonDir, ATOM_Atmosphere::getMoonDir)
		ATOM_DECLARE_METHOD(getMoonSize, ATOM_Atmosphere::getMoonSize)
		ATOM_DECLARE_METHOD(setNumSamples, ATOM_Atmosphere::setNumSamples)
		ATOM_DECLARE_METHOD(getNumSamples, ATOM_Atmosphere::getNumSamples)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Actor, ATOM_Actor, ATOM_Node, ATOM_Node)
		ATOM_DECLARE_METHOD(doAction, ATOM_Actor::doAction)
		ATOM_DECLARE_METHOD(setDefaultActionSpeed, ATOM_Actor::setDefaultActionSpeed)
		ATOM_DECLARE_METHOD(setCurrentActionSpeed, ATOM_Actor::setCurrentActionSpeed)
		ATOM_DECLARE_METHOD(resetCurrentAction, ATOM_Actor::resetCurrentAction)
		ATOM_DECLARE_METHOD(getInternalGeode, ATOM_Actor::getInternalGeode)
		ATOM_DECLARE_METHOD(saveToFile, ATOM_Actor::saveToFile)
		ATOM_DECLARE_METHOD(setPart, ATOM_Actor::setPart)
		ATOM_DECLARE_METHOD(getPart, ATOM_Actor::getPart)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_CLASS_NOPARENT(ATOM_Camera, ATOM_Camera)
		ATOM_DECLARE_METHOD(getPosition, ATOM_Camera::getPosition)
		ATOM_DECLARE_METHOD(setViewport, ATOM_Camera::setViewport)
		ATOM_DECLARE_METHOD(setPerspective, ATOM_Camera::setPerspective)
		ATOM_DECLARE_METHOD(setOrtho, ATOM_Camera::setOrtho)
		ATOM_DECLARE_METHOD(setProjectionMatrix, ATOM_Camera::setProjectionMatrix)
		ATOM_DECLARE_METHOD(setViewMatrix, ATOM_Camera::setViewMatrix)
		ATOM_DECLARE_METHOD(getProjectionMatrix, ATOM_Camera::getProjectionMatrix)
		ATOM_DECLARE_METHOD(getViewMatrix, ATOM_Camera::getViewMatrix)
		ATOM_DECLARE_METHOD(getInvViewMatrix, ATOM_Camera::getInvViewMatrix)
		ATOM_DECLARE_METHOD(getViewProjectionMatrix, ATOM_Camera::getViewProjectionMatrix)
		ATOM_DECLARE_METHOD(getLeft, ATOM_Camera::getLeft)
		ATOM_DECLARE_METHOD(getTop, ATOM_Camera::getTop)
		ATOM_DECLARE_METHOD(getRight, ATOM_Camera::getRight)
		ATOM_DECLARE_METHOD(getBottom, ATOM_Camera::getBottom)
		ATOM_DECLARE_METHOD(getNearPlane, ATOM_Camera::getNearPlane)
		ATOM_DECLARE_METHOD(getFarPlane, ATOM_Camera::getFarPlane)
		ATOM_DECLARE_METHOD(isPerspective, ATOM_Camera::isPerspective)
		ATOM_DECLARE_METHOD(isOrtho, ATOM_Camera::isOrtho)
		ATOM_DECLARE_METHOD(getAspect, ATOM_Camera::getAspect)
		ATOM_DECLARE_METHOD(getInvTanHalfFovy, ATOM_Camera::getInvTanHalfFovy)
		ATOM_DECLARE_METHOD(getTanHalfFovy, ATOM_Camera::getTanHalfFovy)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_Hud, ATOM_Hud, ATOM_Node, ATOM_Node)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ALIGN_CENTER, ATOM_Hud::ALIGN_CENTER)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ALIGN_LEFT, ATOM_Hud::ALIGN_LEFT)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ALIGN_RIGHT, ATOM_Hud::ALIGN_RIGHT)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ALIGN_TOP, ATOM_Hud::ALIGN_TOP)
		ATOM_DECLARE_STATIC_INT_CONSTANT(ALIGN_BOTTOM, ATOM_Hud::ALIGN_BOTTOM)
		ATOM_DECLARE_METHOD(setPosition, ATOM_Hud::setPosition)
		ATOM_DECLARE_METHOD(setZ, ATOM_Hud::setZ)
		ATOM_DECLARE_METHOD(getZ, ATOM_Hud::getZ)
		ATOM_DECLARE_METHOD(setScreenSpace, ATOM_Hud::setScreenSpace)
		ATOM_DECLARE_METHOD(isScreenSpace, ATOM_Hud::isScreenSpace)
		ATOM_DECLARE_METHOD(setWidth, ATOM_Hud::setWidth)
		ATOM_DECLARE_METHOD(setHeight, ATOM_Hud::setHeight)
		ATOM_DECLARE_METHOD(getWidth, ATOM_Hud::getWidth)
		ATOM_DECLARE_METHOD(getHeight, ATOM_Hud::getHeight)
		ATOM_DECLARE_METHOD(setColor, ATOM_Hud::setColor)
		ATOM_DECLARE_METHOD(getColor, ATOM_Hud::getColor)
		ATOM_DECLARE_METHOD(setTexture, ATOM_Hud::setTexture)
		ATOM_DECLARE_METHOD(getTexture, ATOM_Hud::getTexture)
		ATOM_DECLARE_METHOD(getCenterPosition, ATOM_Hud::getCenterPosition)
		ATOM_DECLARE_METHOD(setAlignment, ATOM_Hud::setAlignment)
		ATOM_DECLARE_METHOD(getAlignment, ATOM_Hud::getAlignment)
		ATOM_DECLARE_METHOD(setText, Hud_SetText)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS(ATOM_GuiHud, ATOM_GuiHud, ATOM_Hud, ATOM_Hud)
		ATOM_DECLARE_METHOD(getGuiRenderer, ATOM_GuiHud::getGuiRenderer)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_CLASS_NOPARENT(ATOM_Point2Di, ATOM_Point2Di)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_Point2Di, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_Point2Di, y, int)
		ATOM_DECLARE_CONSTRUCTOR(GUIPoint_Contructor)
		ATOM_DECLARE_EQ_OP (GUIPoint_EQ)
		ATOM_DECLARE_ADD_OP (GUIPoint_ADD)
		ATOM_DECLARE_SUB_OP (GUIPoint_SUB)
		ATOM_DECLARE_NEG_OP (GUIPoint_NEG)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_CLASS_NOPARENT(ATOM_Size2Di, ATOM_Size2Di)
		ATOM_DECLARE_RAW_ATTRIBUTE(w, ATOM_Size2Di, w, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(h, ATOM_Size2Di, h, int)
		ATOM_DECLARE_CONSTRUCTOR(GUISize_Contructor)
		ATOM_DECLARE_EQ_OP (GUISize_EQ)
		ATOM_DECLARE_ADD_OP (GUISize_ADD)
		ATOM_DECLARE_SUB_OP (GUISize_SUB)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_CLASS_NOPARENT(ATOM_Rect2Di, ATOM_Rect2Di)
		ATOM_DECLARE_RAW_ATTRIBUTE(point, ATOM_Rect2Di, point, ATOM_Point2Di)
		ATOM_DECLARE_RAW_ATTRIBUTE(size, ATOM_Rect2Di, size, ATOM_Size2Di)
		ATOM_DECLARE_CONSTRUCTOR(GUIRect_Contructor)
		ATOM_DECLARE_EQ_OP (GUIRect_EQ)
		ATOM_DECLARE_METHOD(isPointIn, ATOM_Rect2Di::isPointIn)
		ATOM_DECLARE_METHOD(intersectedWith, Rect_IntersectedWith)
		ATOM_DECLARE_STATIC_METHOD(getIntersection, ATOM_Rect2Di::getIntersection)
	ATOM_SCRIPT_END_CLASS()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT(ATOM_Light, ATOM_Light)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Unknown, ATOM_Light::Unknown)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Directional, ATOM_Light::Directional)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Point, ATOM_Light::Point)
		ATOM_DECLARE_STATIC_INT_CONSTANT(Spot, ATOM_Light::Spot)
		ATOM_DECLARE_METHOD(setColorARGB, ATOM_Light::setColorARGB)
		ATOM_DECLARE_METHOD(setColor4f, ATOM_Light::setColor4f)
		ATOM_DECLARE_METHOD(getColorARGB, ATOM_Light::getColorARGB)
		ATOM_DECLARE_METHOD(getColor4f, ATOM_Light::getColor4f)
		ATOM_DECLARE_METHOD(setCastShadow, ATOM_Light::setCastShadow)
		ATOM_DECLARE_METHOD(getCastShadow, ATOM_Light::getCastShadow)
		ATOM_DECLARE_METHOD(setRange, ATOM_Light::setRange)
		ATOM_DECLARE_METHOD(getRange, ATOM_Light::getRange)
		ATOM_DECLARE_METHOD(setLightType, ATOM_Light::setLightType)
		ATOM_DECLARE_METHOD(getLightType, ATOM_Light::getLightType)
		ATOM_DECLARE_METHOD(setInnerCone, ATOM_Light::setInnerCone)
		ATOM_DECLARE_METHOD(getInnerCone, ATOM_Light::getInnerCone)
		ATOM_DECLARE_METHOD(setOuterCone, ATOM_Light::setOuterCone)
		ATOM_DECLARE_METHOD(getOuterCone, ATOM_Light::getOuterCone)
		ATOM_DECLARE_METHOD(setAttenuation, ATOM_Light::setAttenuation)
		ATOM_DECLARE_METHOD(getAttenuation, ATOM_Light::getAttenuation)
		ATOM_DECLARE_METHOD(setDirection, ATOM_Light::setDirection)
		ATOM_DECLARE_METHOD(getDirection, ATOM_Light::getDirection)
		ATOM_DECLARE_METHOD(setPosition, ATOM_Light::setPosition)
		ATOM_DECLARE_METHOD(getPosition, ATOM_Light::getPosition)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS_NOPARENT(ATOM_RenderWindowDesc, ATOM_RenderWindowDesc)
		ATOM_DECLARE_RAW_ATTRIBUTE(width, ATOM_RenderWindowDesc, width, unsigned)
		ATOM_DECLARE_RAW_ATTRIBUTE(height, ATOM_RenderWindowDesc, height, unsigned)
		ATOM_DECLARE_RAW_ATTRIBUTE(fullscreen, ATOM_RenderWindowDesc, fullscreen, bool)
		ATOM_DECLARE_RAW_ATTRIBUTE(naked, ATOM_RenderWindowDesc, naked, bool)
		ATOM_DECLARE_RAW_ATTRIBUTE(resizable, ATOM_RenderWindowDesc, resizable, bool)
		ATOM_DECLARE_RAW_ATTRIBUTE(multisample, ATOM_RenderWindowDesc, multisample, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(title, ATOM_RenderWindowDesc, title, const char*)
		ATOM_DECLARE_RAW_ATTRIBUTE(iconid, ATOM_RenderWindowDesc, iconid, void*)
		ATOM_DECLARE_RAW_ATTRIBUTE(windowid, ATOM_RenderWindowDesc, windowid, void*)
		ATOM_DECLARE_CONSTRUCTOR(RenderWindowDesc_Constructor)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOCONSTRUCTOR(ATOM_ScriptEventTrigger, ATOM_ScriptEventTrigger, ATOM_EventTrigger, ATOM_EventTrigger)
		ATOM_DECLARE_CONSTRUCTOR_DEREF(ScriptEventTrigger_Constructor, ATOM_DELETE_DEREF_FUNCNAME(ATOM_ScriptEventTrigger))
		ATOM_DECLARE_STATIC_METHOD(getCurrent, ATOM_ScriptEventTrigger::getCurrent)
		ATOM_DECLARE_ATTRIBUTE(onUnhandled, ATOM_ScriptEventTrigger::getUnhandledFunc, ATOM_ScriptEventTrigger::setUnhandledFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowMouseMove, ATOM_ScriptEventTrigger::getWindowMouseMoveFunc, ATOM_ScriptEventTrigger::setWindowMouseMoveFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowMouseWheel, ATOM_ScriptEventTrigger::getWindowMouseWheelFunc, ATOM_ScriptEventTrigger::setWindowMouseWheelFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowMouseButtonDown, ATOM_ScriptEventTrigger::getWindowMouseButtonDownFunc, ATOM_ScriptEventTrigger::setWindowMouseButtonDownFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowMouseButtonUp, ATOM_ScriptEventTrigger::getWindowMouseButtonUpFunc, ATOM_ScriptEventTrigger::setWindowMouseButtonUpFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowKeyDown, ATOM_ScriptEventTrigger::getWindowKeyDownFunc, ATOM_ScriptEventTrigger::setWindowKeyDownFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowKeyUp, ATOM_ScriptEventTrigger::getWindowKeyUpFunc, ATOM_ScriptEventTrigger::setWindowKeyUpFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowChar, ATOM_ScriptEventTrigger::getWindowCharFunc, ATOM_ScriptEventTrigger::setWindowCharFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowResize, ATOM_ScriptEventTrigger::getWindowResizeFunc, ATOM_ScriptEventTrigger::setWindowResizeFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowActive, ATOM_ScriptEventTrigger::getWindowActiveFunc, ATOM_ScriptEventTrigger::setWindowActiveFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowMove, ATOM_ScriptEventTrigger::getWindowMoveFunc, ATOM_ScriptEventTrigger::setWindowMoveFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowExpose, ATOM_ScriptEventTrigger::getWindowExposeFunc, ATOM_ScriptEventTrigger::setWindowExposeFunc)
		ATOM_DECLARE_ATTRIBUTE(onWindowClose, ATOM_ScriptEventTrigger::getWindowCloseFunc, ATOM_ScriptEventTrigger::setWindowCloseFunc)
		ATOM_DECLARE_ATTRIBUTE(onDeviceLost, ATOM_ScriptEventTrigger::getDeviceLostFunc, ATOM_ScriptEventTrigger::setDeviceLostFunc)
		ATOM_DECLARE_ATTRIBUTE(onDeviceReset, ATOM_ScriptEventTrigger::getDeviceResetFunc, ATOM_ScriptEventTrigger::setDeviceResetFunc)
		ATOM_DECLARE_ATTRIBUTE(onAppIdle, ATOM_ScriptEventTrigger::getAppIdleFunc, ATOM_ScriptEventTrigger::setAppIdleFunc)
		ATOM_DECLARE_ATTRIBUTE(onAppInit, ATOM_ScriptEventTrigger::getAppInitFunc, ATOM_ScriptEventTrigger::setAppInitFunc)
		ATOM_DECLARE_ATTRIBUTE(onAppExit, ATOM_ScriptEventTrigger::getAppExitFunc, ATOM_ScriptEventTrigger::setAppExitFunc)
		ATOM_DECLARE_ATTRIBUTE(onAppQuit, ATOM_ScriptEventTrigger::getAppQuitFunc, ATOM_ScriptEventTrigger::setAppQuitFunc)
		ATOM_DECLARE_ATTRIBUTE(onAppActive, ATOM_ScriptEventTrigger::getAppActiveFunc, ATOM_ScriptEventTrigger::setAppActiveFunc)
		ATOM_DECLARE_ATTRIBUTE(onIdle, ATOM_ScriptEventTrigger::getIdleFunc, ATOM_ScriptEventTrigger::setIdleFunc)
		ATOM_DECLARE_ATTRIBUTE(onCommand, ATOM_ScriptEventTrigger::getCommandFunc, ATOM_ScriptEventTrigger::setCommandFunc)
		ATOM_DECLARE_ATTRIBUTE(onMenuPopup, ATOM_ScriptEventTrigger::getMenuPopupFunc, ATOM_ScriptEventTrigger::setMenuPopupFunc)
		ATOM_DECLARE_ATTRIBUTE(onResize, ATOM_ScriptEventTrigger::getResizeFunc, ATOM_ScriptEventTrigger::setResizeFunc)
		ATOM_DECLARE_ATTRIBUTE(onSetFocus, ATOM_ScriptEventTrigger::getFocusFunc, ATOM_ScriptEventTrigger::setFocusFunc)
		ATOM_DECLARE_ATTRIBUTE(onKillFocus, ATOM_ScriptEventTrigger::getKillFocusFunc, ATOM_ScriptEventTrigger::setKillFocusFunc)
		ATOM_DECLARE_ATTRIBUTE(onLButtonDown, ATOM_ScriptEventTrigger::getLButtonDownFunc, ATOM_ScriptEventTrigger::setLButtonDownFunc)
		ATOM_DECLARE_ATTRIBUTE(onLButtonUp, ATOM_ScriptEventTrigger::getLButtonUpFunc, ATOM_ScriptEventTrigger::setLButtonUpFunc)
		ATOM_DECLARE_ATTRIBUTE(onMButtonDown, ATOM_ScriptEventTrigger::getMButtonDownFunc, ATOM_ScriptEventTrigger::setMButtonDownFunc)
		ATOM_DECLARE_ATTRIBUTE(onMButtonUp, ATOM_ScriptEventTrigger::getMButtonUpFunc, ATOM_ScriptEventTrigger::setMButtonUpFunc)
		ATOM_DECLARE_ATTRIBUTE(onRButtonDown, ATOM_ScriptEventTrigger::getRButtonDownFunc, ATOM_ScriptEventTrigger::setRButtonDownFunc)
		ATOM_DECLARE_ATTRIBUTE(onRButtonUp, ATOM_ScriptEventTrigger::getRButtonUpFunc, ATOM_ScriptEventTrigger::setRButtonUpFunc)
		ATOM_DECLARE_ATTRIBUTE(onMouseMove, ATOM_ScriptEventTrigger::getMouseMoveFunc, ATOM_ScriptEventTrigger::setMouseMoveFunc)
		ATOM_DECLARE_ATTRIBUTE(onMouseWheel, ATOM_ScriptEventTrigger::getMouseWheelFunc, ATOM_ScriptEventTrigger::setMouseWheelFunc)
		ATOM_DECLARE_ATTRIBUTE(onMouseEnter, ATOM_ScriptEventTrigger::getMouseEnterFunc, ATOM_ScriptEventTrigger::setMouseEnterFunc)
		ATOM_DECLARE_ATTRIBUTE(onMouseLeave, ATOM_ScriptEventTrigger::getMouseLeaveFunc, ATOM_ScriptEventTrigger::setMouseLeaveFunc)
		ATOM_DECLARE_ATTRIBUTE(onKeyDown, ATOM_ScriptEventTrigger::getKeyDownFunc, ATOM_ScriptEventTrigger::setKeyDownFunc)
		ATOM_DECLARE_ATTRIBUTE(onKeyUp, ATOM_ScriptEventTrigger::getKeyUpFunc, ATOM_ScriptEventTrigger::setKeyUpFunc)
		ATOM_DECLARE_ATTRIBUTE(onChar, ATOM_ScriptEventTrigger::getCharFunc, ATOM_ScriptEventTrigger::setCharFunc)
		ATOM_DECLARE_ATTRIBUTE(onClose, ATOM_ScriptEventTrigger::getCloseFunc, ATOM_ScriptEventTrigger::setCloseFunc)
		ATOM_DECLARE_ATTRIBUTE(onCellLButtonDown, ATOM_ScriptEventTrigger::getCellLButtonDownFunc, ATOM_ScriptEventTrigger::setCellLButtonDownFunc)
		ATOM_DECLARE_ATTRIBUTE(onCellLButtonUp, ATOM_ScriptEventTrigger::getCellLButtonUpFunc, ATOM_ScriptEventTrigger::setCellLButtonUpFunc)
		ATOM_DECLARE_ATTRIBUTE(onCellRButtonDown, ATOM_ScriptEventTrigger::getCellRButtonDownFunc, ATOM_ScriptEventTrigger::setCellRButtonDownFunc)
		ATOM_DECLARE_ATTRIBUTE(onCellRButtonUp, ATOM_ScriptEventTrigger::getCellRButtonUpFunc, ATOM_ScriptEventTrigger::setCellRButtonUpFunc)
		ATOM_DECLARE_ATTRIBUTE(onCellClick, ATOM_ScriptEventTrigger::getCellClickFunc, ATOM_ScriptEventTrigger::setCellClickFunc)
		ATOM_DECLARE_ATTRIBUTE(onCellRClick, ATOM_ScriptEventTrigger::getCellRClickFunc, ATOM_ScriptEventTrigger::setCellRClickFunc)
		ATOM_DECLARE_ATTRIBUTE(onCellMouseEnter, ATOM_ScriptEventTrigger::getCellMouseEnterFunc, ATOM_ScriptEventTrigger::setCellMouseEnterFunc)
		ATOM_DECLARE_ATTRIBUTE(onCellMouseLeave, ATOM_ScriptEventTrigger::getCellMouseLeaveFunc, ATOM_ScriptEventTrigger::setCellMouseLeaveFunc)
		ATOM_DECLARE_ATTRIBUTE(onListBoxClick, ATOM_ScriptEventTrigger::getListBoxClickFunc, ATOM_ScriptEventTrigger::setListBoxClickFunc)
		ATOM_DECLARE_ATTRIBUTE(onScroll, ATOM_ScriptEventTrigger::getScrollFunc, ATOM_ScriptEventTrigger::setScrollFunc)
		ATOM_DECLARE_ATTRIBUTE(onEditSysKey, ATOM_ScriptEventTrigger::getEditSysKeyFunc, ATOM_ScriptEventTrigger::setEditSysKeyFunc)
		ATOM_DECLARE_ATTRIBUTE(onEditTextChanged, ATOM_ScriptEventTrigger::getEditTextChangedFunc, ATOM_ScriptEventTrigger::setEditTextChangedFunc)
		ATOM_DECLARE_ATTRIBUTE(onInitDialog, ATOM_ScriptEventTrigger::getInitDialogFunc, ATOM_ScriptEventTrigger::setInitDialogFunc)
		ATOM_DECLARE_ATTRIBUTE(onFlashCall, ATOM_ScriptEventTrigger::getFlashCallFunc, ATOM_ScriptEventTrigger::setFlashCallFunc)
		ATOM_DECLARE_ATTRIBUTE(onFlashFSCommand, ATOM_ScriptEventTrigger::getFlashFSCommandFunc, ATOM_ScriptEventTrigger::setFlashFSCommandFunc)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_Event, ATOM_Event)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetEvent, ATOM_WidgetEvent, ATOM_Event, ATOM_Event)
		ATOM_DECLARE_RAW_ATTRIBUTE(id, ATOM_WidgetEvent, id, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetIdleEvent, ATOM_WidgetIdleEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetIdleEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetCommandEvent, ATOM_WidgetCommandEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetCommandEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_MenuPopupEvent, ATOM_MenuPopupEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_MenuPopupEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetResizeEvent, ATOM_WidgetResizeEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(widgetRect, ATOM_WidgetResizeEvent, widgetRect, ATOM_Rect2Di)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetResizeEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetSetFocusEvent, ATOM_WidgetSetFocusEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetSetFocusEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetLostFocusEvent, ATOM_WidgetLostFocusEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetLostFocusEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetMouseButtonEvent, ATOM_WidgetMouseButtonEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_WidgetMouseButtonEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_WidgetMouseButtonEvent, y, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(shiftState, ATOM_WidgetMouseButtonEvent, shiftState, unsigned)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetLButtonDownEvent, ATOM_WidgetLButtonDownEvent, ATOM_WidgetMouseButtonEvent, ATOM_WidgetMouseButtonEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetLButtonDownEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetLButtonUpEvent, ATOM_WidgetLButtonUpEvent, ATOM_WidgetMouseButtonEvent, ATOM_WidgetMouseButtonEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetLButtonUpEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetMButtonDownEvent, ATOM_WidgetMButtonDownEvent, ATOM_WidgetMouseButtonEvent, ATOM_WidgetMouseButtonEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetMButtonDownEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetMButtonUpEvent, ATOM_WidgetMButtonUpEvent, ATOM_WidgetMouseButtonEvent, ATOM_WidgetMouseButtonEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetMButtonUpEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetRButtonDownEvent, ATOM_WidgetRButtonDownEvent, ATOM_WidgetMouseButtonEvent, ATOM_WidgetMouseButtonEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetRButtonDownEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetRButtonUpEvent, ATOM_WidgetRButtonUpEvent, ATOM_WidgetMouseButtonEvent, ATOM_WidgetMouseButtonEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetRButtonUpEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetMouseMoveEvent, ATOM_WidgetMouseMoveEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_WidgetMouseMoveEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_WidgetMouseMoveEvent, y, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(xrel, ATOM_WidgetMouseMoveEvent, xrel, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(yrel, ATOM_WidgetMouseMoveEvent, yrel, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(leftDown, ATOM_WidgetMouseMoveEvent, leftDown, bool)
		ATOM_DECLARE_RAW_ATTRIBUTE(middleDown, ATOM_WidgetMouseMoveEvent, middleDown, bool)
		ATOM_DECLARE_RAW_ATTRIBUTE(rightDown, ATOM_WidgetMouseMoveEvent, rightDown, bool)
		ATOM_DECLARE_RAW_ATTRIBUTE(shiftState, ATOM_WidgetMouseMoveEvent, shiftState, unsigned)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetMouseMoveEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetMouseWheelEvent, ATOM_WidgetMouseWheelEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_WidgetMouseWheelEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_WidgetMouseWheelEvent, y, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(delta, ATOM_WidgetMouseWheelEvent, delta, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(shiftState, ATOM_WidgetMouseWheelEvent, shiftState, unsigned)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetMouseWheelEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetMouseEnterEvent, ATOM_WidgetMouseEnterEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetMouseEnterEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetMouseLeaveEvent, ATOM_WidgetMouseLeaveEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetMouseLeaveEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetKeyEvent, ATOM_WidgetKeyEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(eat, ATOM_WidgetKeyEvent, eat, bool)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetKeyDownEvent, ATOM_WidgetKeyDownEvent, ATOM_WidgetKeyEvent, ATOM_WidgetKeyEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(key, ATOM_WidgetKeyDownEvent, key, ATOM_Key)
		ATOM_DECLARE_RAW_ATTRIBUTE(keymod, ATOM_WidgetKeyDownEvent, keymod, unsigned)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetKeyDownEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetKeyUpEvent, ATOM_WidgetKeyUpEvent, ATOM_WidgetKeyEvent, ATOM_WidgetKeyEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(key, ATOM_WidgetKeyUpEvent, key, ATOM_Key)
		ATOM_DECLARE_RAW_ATTRIBUTE(keymod, ATOM_WidgetKeyUpEvent, keymod, unsigned)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetKeyUpEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_WidgetCharEvent, ATOM_WidgetCharEvent, ATOM_WidgetKeyEvent, ATOM_WidgetKeyEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(mbcc, ATOM_WidgetCharEvent, mbcc, unsigned short)
		ATOM_DECLARE_RAW_ATTRIBUTE(unicc, ATOM_WidgetCharEvent, unicc, unsigned short)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_WidgetCharEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_TopWindowCloseEvent, ATOM_TopWindowCloseEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_TopWindowCloseEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_CellLButtonDownEvent, ATOM_CellLButtonDownEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_CellLButtonDownEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_CellLButtonDownEvent, y, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_CellLButtonDownEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_CellLButtonUpEvent, ATOM_CellLButtonUpEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_CellLButtonUpEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_CellLButtonUpEvent, y, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(from, ATOM_CellLButtonUpEvent, from, ATOM_Widget*)
		ATOM_DECLARE_RAW_ATTRIBUTE(fromX, ATOM_CellLButtonUpEvent, fromX, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(fromY, ATOM_CellLButtonUpEvent, fromY, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_CellLButtonUpEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_CellLeftClickEvent, ATOM_CellLeftClickEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_CellLeftClickEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_CellLeftClickEvent, y, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_CellLeftClickEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_CellRButtonDownEvent, ATOM_CellRButtonDownEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_CellRButtonDownEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_CellRButtonDownEvent, y, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_CellRButtonDownEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_CellRButtonUpEvent, ATOM_CellRButtonUpEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_CellRButtonUpEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_CellRButtonUpEvent, y, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(from, ATOM_CellRButtonUpEvent, from, ATOM_Widget*)
		ATOM_DECLARE_RAW_ATTRIBUTE(fromX, ATOM_CellRButtonUpEvent, fromX, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(fromY, ATOM_CellRButtonUpEvent, fromY, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_CellRButtonUpEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_CellRightClickEvent, ATOM_CellRightClickEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_CellRightClickEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_CellRightClickEvent, y, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_CellRightClickEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_CellMouseEnterEvent, ATOM_CellMouseEnterEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_CellMouseEnterEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_CellMouseEnterEvent, y, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_CellMouseEnterEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_CellMouseLeaveEvent, ATOM_CellMouseLeaveEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(x, ATOM_CellMouseLeaveEvent, x, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(y, ATOM_CellMouseLeaveEvent, y, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_CellMouseLeaveEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_ListBoxClickEvent, ATOM_ListBoxClickEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(index, ATOM_ListBoxClickEvent, index, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(type, ATOM_ListBoxClickEvent, type, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_ListBoxClickEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_ScrollEvent, ATOM_ScrollEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(newPos, ATOM_ScrollEvent, newPos, int)
		ATOM_DECLARE_RAW_ATTRIBUTE(oldPos, ATOM_ScrollEvent, oldPos, int)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_ScrollEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_EditSysKeyEvent, ATOM_EditSysKeyEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(key, ATOM_EditSysKeyEvent, key, ATOM_Key)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_EditSysKeyEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_EditTextChangedEvent, ATOM_EditTextChangedEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_EditTextChangedEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_EditTextChangedEvent, ATOM_EditTextChangedEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_EditTextChangedEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_DialogInitEvent, ATOM_DialogInitEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_STATIC_METHOD(eventTypeId, ATOM_DialogInitEvent::eventTypeId)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_FlashCallEvent, ATOM_FlashCallEvent, ATOM_WidgetEvent, ATOM_WidgetEvent)
		ATOM_DECLARE_RAW_ATTRIBUTE(request, ATOM_FlashCallEvent, request, ATOM_STRING)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_CLASS(ATOM_AppWMEvent, ATOM_AppWMEvent, ATOM_Event, ATOM_Event)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT_NOCONSTRUCTOR(ATOM_RenderSettings, ATOM_RenderSettings)
		ATOM_DECLARE_STATIC_INT_CONSTANT(QUALITY_HIGH, ATOM_RenderSettings::QUALITY_HIGH)
		ATOM_DECLARE_STATIC_INT_CONSTANT(QUALITY_HIGH, ATOM_RenderSettings::QUALITY_MEDIUM)
		ATOM_DECLARE_STATIC_INT_CONSTANT(QUALITY_HIGH, ATOM_RenderSettings::QUALITY_LOW)
		ATOM_DECLARE_STATIC_METHOD(enableOctree, ATOM_RenderSettings::enableOctree)
		ATOM_DECLARE_STATIC_METHOD(enableFSAA, ATOM_RenderSettings::enableFSAA)
		ATOM_DECLARE_STATIC_METHOD(isFSAAEnabled, ATOM_RenderSettings::isFSAAEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableShadow, ATOM_RenderSettings::enableShadow)
		ATOM_DECLARE_STATIC_METHOD(isShadowEnabled, ATOM_RenderSettings::isShadowEnabled)
		ATOM_DECLARE_STATIC_METHOD(setShadowMapSize, ATOM_RenderSettings::setShadowMapSize)
		ATOM_DECLARE_STATIC_METHOD(getShadowMapSize, ATOM_RenderSettings::getShadowMapSize)
		ATOM_DECLARE_STATIC_METHOD(setShadowRegion, ATOM_RenderSettings::setShadowRegion)
		ATOM_DECLARE_STATIC_METHOD(getShadowRegion, ATOM_RenderSettings::getShadowRegion)
		ATOM_DECLARE_STATIC_METHOD(setShadowQuality, ATOM_RenderSettings::setShadowQuality)
		ATOM_DECLARE_STATIC_METHOD(getShadowQuality, ATOM_RenderSettings::getShadowQuality)
		ATOM_DECLARE_STATIC_METHOD(isMultithreadedAnimationEnabled, ATOM_RenderSettings::isMultithreadedAnimationEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableMultithreadedAnimation, ATOM_RenderSettings::enableMultithreadedAnimation)
		ATOM_DECLARE_STATIC_METHOD(enableAutoIMEChange, ATOM_RenderSettings::enableAutoIMEChange)
		ATOM_DECLARE_STATIC_METHOD(isAutoIMEChangeEnabled, ATOM_RenderSettings::isAutoIMEChangeEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableCloudCover, ATOM_RenderSettings::enableCloudCover)
		ATOM_DECLARE_STATIC_METHOD(isCloudCoverEnabled, ATOM_RenderSettings::isCloudCoverEnabled)
		ATOM_DECLARE_STATIC_METHOD(setTextureSizeScale, ATOM_RenderSettings::setTextureSizeScale)
		ATOM_DECLARE_STATIC_METHOD(getTextureSizeScale, ATOM_RenderSettings::getTextureSizeScale)
		ATOM_DECLARE_STATIC_METHOD(setMaxTextureSizeLimit, ATOM_RenderSettings::setMaxTextureSizeLimit)
		ATOM_DECLARE_STATIC_METHOD(getMaxTextureSizeLimit, ATOM_RenderSettings::getMaxTextureSizeLimit)
		ATOM_DECLARE_STATIC_METHOD(setMinTextureSizeLimit, ATOM_RenderSettings::setMinTextureSizeLimit)
		ATOM_DECLARE_STATIC_METHOD(getMinTextureSizeLimit, ATOM_RenderSettings::getMinTextureSizeLimit)
		ATOM_DECLARE_STATIC_METHOD(enableDetailedTerrain, ATOM_RenderSettings::enableDetailedTerrain)
		ATOM_DECLARE_STATIC_METHOD(detailedTerrainEnabled, ATOM_RenderSettings::detailedTerrainEnabled)
		ATOM_DECLARE_STATIC_METHOD(setWaterQuality, ATOM_RenderSettings::setWaterQuality)
		ATOM_DECLARE_STATIC_METHOD(getWaterQuality, ATOM_RenderSettings::getWaterQuality)
		ATOM_DECLARE_STATIC_METHOD(setAtmosphereQuality, ATOM_RenderSettings::setAtmosphereQuality)
		ATOM_DECLARE_STATIC_METHOD(getAtmosphereQuality, ATOM_RenderSettings::getAtmosphereQuality)
		ATOM_DECLARE_STATIC_METHOD(enableOcclusionTest, ATOM_RenderSettings::enableOcclusionTest)
		ATOM_DECLARE_STATIC_METHOD(occlusionTestEnabled, ATOM_RenderSettings::occlusionTestEnabled)
		ATOM_DECLARE_STATIC_METHOD(setDeferredBufferScale, ATOM_RenderSettings::setDeferredBufferScale)
		ATOM_DECLARE_STATIC_METHOD(getDeferredBufferScale, ATOM_RenderSettings::getDeferredBufferScale)
		ATOM_DECLARE_STATIC_METHOD(enableDebugDeferredNormals, ATOM_RenderSettings::enableDebugDeferredNormals)
		ATOM_DECLARE_STATIC_METHOD(isDebugDeferredNormalsEnabled, ATOM_RenderSettings::isDebugDeferredNormalsEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableDebugDeferredColors, ATOM_RenderSettings::enableDebugDeferredColors)

		//---- wangjian added ----//
		ATOM_DECLARE_STATIC_METHOD(enableDebugShadowMap, ATOM_RenderSettings::enableDebugShadowMap)
		ATOM_DECLARE_STATIC_METHOD(enableDebugDeferredLightBuffer, ATOM_RenderSettings::enableDebugDeferredLightBuffer)
		ATOM_DECLARE_STATIC_METHOD(isDebugDeferredLightBufferEnabled, ATOM_RenderSettings::isDebugDeferredLightBufferEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableDebugHalfLambertBuffer, ATOM_RenderSettings::enableDebugHalfLambertBuffer)
		ATOM_DECLARE_STATIC_METHOD(isDebugHalfLambertBufferEnabled, ATOM_RenderSettings::isDebugHalfLambertBufferEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableDebugBloomBuffer, ATOM_RenderSettings::enableDebugBloomBuffer)
		ATOM_DECLARE_STATIC_METHOD(isDebugBloomBufferEnabled, ATOM_RenderSettings::isDebugBloomBufferEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableToneMapping, ATOM_RenderSettings::enableToneMapping)
		ATOM_DECLARE_STATIC_METHOD(isToneMappingEnabled, ATOM_RenderSettings::isToneMappingEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableDebugHdrLumin, ATOM_RenderSettings::enableDebugHdrLumin)
		ATOM_DECLARE_STATIC_METHOD(isDebugHdrLuminEnabled, ATOM_RenderSettings::isDebugHdrLuminEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableDebugHdrRTs, ATOM_RenderSettings::enableDebugHdrRTs)
		ATOM_DECLARE_STATIC_METHOD(isDebugHdrRTsEnabled, ATOM_RenderSettings::isDebugHdrRTsEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableFilmicMapping, ATOM_RenderSettings::enableFilmicMapping)
		ATOM_DECLARE_STATIC_METHOD(isFilmicMappingEnabled, ATOM_RenderSettings::isFilmicMappingEnabled)
		ATOM_DECLARE_STATIC_METHOD(saveHDRRTs, ATOM_RenderSettings::saveHDRRTs)
		ATOM_DECLARE_STATIC_METHOD(isSaveHDRRTsEnabled, ATOM_RenderSettings::isSaveHDRRTsEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableStateSorting, ATOM_RenderSettings::enableStateSorting)
		ATOM_DECLARE_STATIC_METHOD(isStateSortingEnabled, ATOM_RenderSettings::isStateSortingEnabled)
		ATOM_DECLARE_STATIC_METHOD(setShadowDrawItemUpdateFrameCache, ATOM_RenderSettings::setShadowDrawItemUpdateFrameCache)
		ATOM_DECLARE_STATIC_METHOD(setSceneDrawItemUpdateFrameCache, ATOM_RenderSettings::setSceneDrawItemUpdateFrameCache)
		ATOM_DECLARE_STATIC_METHOD(setCullUpdateViewDirThreshold, ATOM_RenderSettings::setCullUpdateViewDirThreshold)
		ATOM_DECLARE_STATIC_METHOD(setCullUpdateViewPosThreshold, ATOM_RenderSettings::setCullUpdateViewPosThreshold)
		ATOM_DECLARE_STATIC_METHOD(enableHDRRendering, ATOM_RenderSettings::enableHDRRendering)
		ATOM_DECLARE_STATIC_METHOD(enableFloatShading, ATOM_RenderSettings::enableFloatShading)
		ATOM_DECLARE_STATIC_METHOD(setShadowMaskSizeScale, ATOM_RenderSettings::setShadowMaskSizeScale)
		/*ATOM_DECLARE_STATIC_METHOD(enableStreamingLog, ATOM_RenderSettings::enableStreamingLog)*/
		ATOM_DECLARE_STATIC_METHOD(isRainEnabled, ATOM_RenderSettings::isRainEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableRain, ATOM_RenderSettings::enableRain)
		ATOM_DECLARE_STATIC_METHOD(enablePointLightType, ATOM_RenderSettings::enablePointLightType)
		//------------------------//

		ATOM_DECLARE_STATIC_METHOD(isDebugDeferredColorsEnabled, ATOM_RenderSettings::isDebugDeferredColorsEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableDebugDeferredDepth, ATOM_RenderSettings::enableDebugDeferredDepth)
		ATOM_DECLARE_STATIC_METHOD(isDebugDeferredDepthEnabled, ATOM_RenderSettings::isDebugDeferredDepthEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableAtmosphereEffect, ATOM_RenderSettings::enableAtmosphereEffect)
		ATOM_DECLARE_STATIC_METHOD(isAtmosphereEffectEnabled, ATOM_RenderSettings::isAtmosphereEffectEnabled)
		ATOM_DECLARE_STATIC_METHOD(setSSAOScale, ATOM_RenderSettings::setSSAOScale)
		ATOM_DECLARE_STATIC_METHOD(getSSAOScale, ATOM_RenderSettings::getSSAOScale)
		ATOM_DECLARE_STATIC_METHOD(setSSAOBias, ATOM_RenderSettings::setSSAOBias)
		ATOM_DECLARE_STATIC_METHOD(getSSAOBias, ATOM_RenderSettings::getSSAOBias)
		ATOM_DECLARE_STATIC_METHOD(setSSAORadius, ATOM_RenderSettings::setSSAORadius)
		ATOM_DECLARE_STATIC_METHOD(getSSAORadius, ATOM_RenderSettings::getSSAORadius)
		ATOM_DECLARE_STATIC_METHOD(setSSAOIntensity, ATOM_RenderSettings::setSSAOIntensity)
		ATOM_DECLARE_STATIC_METHOD(getSSAOIntensity, ATOM_RenderSettings::getSSAOIntensity)
		ATOM_DECLARE_STATIC_METHOD(enableSSAO, ATOM_RenderSettings::enableSSAO)
		ATOM_DECLARE_STATIC_METHOD(isSSAOEnabled, ATOM_RenderSettings::isSSAOEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableSSAODownsample, ATOM_RenderSettings::enableSSAODownsample)
		ATOM_DECLARE_STATIC_METHOD(isSSAODownsampleEnabled, ATOM_RenderSettings::isSSAODownsampleEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableSSAOBlur, ATOM_RenderSettings::enableSSAOBlur)
		ATOM_DECLARE_STATIC_METHOD(isSSAOBlurEnabled, ATOM_RenderSettings::isSSAOBlurEnabled)
		ATOM_DECLARE_STATIC_METHOD(enableDebugSSAO, ATOM_RenderSettings::enableDebugSSAO)
		ATOM_DECLARE_STATIC_METHOD(isDebugSSAOEnabled, ATOM_RenderSettings::isDebugSSAOEnabled)
		ATOM_DECLARE_STATIC_METHOD(setSSAODownsampleFactor, ATOM_RenderSettings::setSSAODownsampleFactor)
		ATOM_DECLARE_STATIC_METHOD(getSSAODownsampleFactor, ATOM_RenderSettings::getSSAODownsampleFactor)
		ATOM_DECLARE_STATIC_METHOD(setMinScreenContribution, ATOM_RenderSettings::setMinScreenContribution)
		ATOM_DECLARE_STATIC_METHOD(getMinScreenContribution, ATOM_RenderSettings::getMinScreenContribution)
		ATOM_DECLARE_STATIC_METHOD(isFixedFunction, ATOM_RenderSettings::isFixedFunction)
		ATOM_DECLARE_STATIC_METHOD(setDepthScale, ATOM_RenderSettings::setDepthScale)
		ATOM_DECLARE_STATIC_METHOD(getDepthScale, ATOM_RenderSettings::getDepthScale)
	ATOM_SCRIPT_END_CLASS ()

	ATOM_SCRIPT_BEGIN_NONCOPYABLE_CLASS_NOPARENT(ATOM_AsyncLoader, ATOM_AsyncLoader)
		ATOM_DECLARE_STATIC_METHOD(setEnableLog, ATOM_AsyncLoader::setEnableLog)
		ATOM_DECLARE_STATIC_METHOD(setEnableStatistics, ATOM_AsyncLoader::setEnableStatistics)
		ATOM_DECLARE_STATIC_METHOD(enableProcedureGC, ATOM_AsyncLoader::enableProcedureGC)
		ATOM_DECLARE_STATIC_METHOD(enableDoubleIOThread, ATOM_AsyncLoader::enableDoubleIOThread)
	ATOM_SCRIPT_END_CLASS ()

ATOM_SCRIPT_END_TYPE_TABLE

static ATOM_RenderWindow *_initializeGfx (const ATOM_RenderWindowDesc &primaryWindowDesc, ATOM_RenderWindow::ShowMode showMode, bool contentBackup, void *instance)
{
	ATOM_AUTOREF(ATOM_RenderWindow) win = ATOM_InitializeGfx (primaryWindowDesc, showMode, contentBackup, instance);

	if (win)
	{
		win->addRef ();
		return win.get();
	}

	return 0;
}

ATOM_SCRIPT_BEGIN_FUNCTION_TABLE(EngineFunctions)
	ATOM_DECLARE_FUNCTION(ATOM_IsInitialized, ATOM_IsInitialized)
	ATOM_DECLARE_FUNCTION_DEREF(ATOM_InitializeGfx, _initializeGfx, ATOM_OBJECT_DEREF_FUNCNAME(ATOM_RenderWindow))
	ATOM_DECLARE_FUNCTION(ATOM_DoneGfx, ATOM_DoneGfx)
	ATOM_DECLARE_FUNCTION(ATOM_ToggleFullScreen, ATOM_ToggleFullScreen)
	ATOM_DECLARE_FUNCTION(ATOM_GetRenderDevice, ATOM_GetRenderDevice)
	ATOM_DECLARE_FUNCTION(ATOM_DumpEngineObjects, ATOM_DumpEngineObjects)
	ATOM_DECLARE_FUNCTION(registerPluginsEngine, registerPluginsEngine)
    ATOM_DECLARE_FUNCTION(registerPluginsRender, registerPluginsRender)
    ATOM_DECLARE_FUNCTION(registerPluginsImage, registerPluginsImage)
ATOM_SCRIPT_END_FUNCTION_TABLE

void __engine_bind_script (ATOM_Script *script)
{
	ATOM_SCRIPT_REGISTER_TYPE_TABLE(script, EngineTypes);
	ATOM_SCRIPT_REGISTER_FUNCTION_TABLE(script, EngineFunctions);
}
